代码之家  ›  专栏  ›  技术社区  ›  Jacek

在寻呼机适配器中使用字符串数组

  •  0
  • Jacek  · 技术社区  · 7 年前

    我正在我的Android应用程序中创建滑动适配器,我必须使用strings.xml中的字符串。我以为用 context.getResources().getStringArray()。 会帮助我的,但不起作用。我对listadapter也有同样的问题,但我认为我在两个案例中犯了同样的错误。 你知道吗?

    滑块适配器.class

    public class SliderAdapter extends PagerAdapter {
    
    static Resources res = null;
    Context context;
    LayoutInflater layoutInflater;
    
    
    public SliderAdapter(Context context)
    {
        this.context = context;
    
    }
    
    public int [] slide_images = {
            R.drawable.ecu_start,
            R.drawable.ecu_version
    
    
    };
    
    String[] slide_headings = context.getResources().getStringArray(R.array.p06_heading);
    
    
    String[] slide_descs = context.getResources().getStringArray(R.array.p06_desc);
    
    
    @Override
    public int getCount() {
        return slide_headings.length;
    }
    
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == (RelativeLayout) object;
    
    }
    
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.slide_layout, container, false);
    
    
    
    
        ImageView slideImageView = (ImageView) view.findViewById(R.id.slide_image);
        TextView slideHeading = (TextView) view.findViewById(R.id.slide_heading);
        TextView slideDescription = (TextView) view.findViewById(R.id.slide_desc);
    
        slideImageView.setImageResource(slide_images[position]);
        slideHeading.setText(slide_headings[position]);
        slideDescription.setText(slide_descs[position]);
    
        container.addView(view);
    
        return view;
    }
    
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((RelativeLayout)object);
    }
    }
    

    日志分类:

    06-16 01:45:01.834 14492-14492/com.example.jacek.hondadiagnostic e/androidruntime:fatal exception:main 流程:com.example.jacek.hondadiagnostic,PID:14492 java.lang.runtimeexception:无法启动activity componentinfo com.example.jacek.hondadiagnostic/com.example.jacek.hondadiagnostic.tipsy.p06_vtec:java.lang.nullpointerException:尝试调用虚拟方法“android.content.res.resources android.content.context.getresources()”在空对象引用上

    1 回复  |  直到 7 年前
        1
  •  0
  •   Amir Hossein Mirzaei    7 年前

    试试这个:

    public class SliderAdapter extends PagerAdapter {
    
    static Resources res = null;
    Context context;
    LayoutInflater layoutInflater;
    
    
    public SliderAdapter(Context context)
    {
        this.context = context;
    
        slide_headings = context.getResources().getStringArray(R.array.p06_heading);
        slide_descs = context.getResources().getStringArray(R.array.p06_desc);
    }
    
    public int [] slide_images = {
            R.drawable.ecu_start,
            R.drawable.ecu_version
    
    
    };
    
    String[] slide_headings  ;
    
    
    String[] slide_descs ;
    
    
    @Override
    public int getCount() {
      if(slide_headings==null)return 0;
        return slide_headings.length;
    }
    
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == (RelativeLayout) object;
    
    }
    
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.slide_layout, container, false);
    
    
    
    
        ImageView slideImageView = (ImageView) view.findViewById(R.id.slide_image);
        TextView slideHeading = (TextView) view.findViewById(R.id.slide_heading);
        TextView slideDescription = (TextView) view.findViewById(R.id.slide_desc);
    
        slideImageView.setImageResource(slide_images[position]);
        slideHeading.setText(slide_headings[position]);
        slideDescription.setText(slide_descs[position]);
    
        container.addView(view);
    
        return view;
    }
    
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((RelativeLayout)object);
    }
      }