【问题标题】:I'm getting 'android.content.res.Resources android.content.Context.getResources()'我得到'android.content.res.Resources android.content.Context.getResources()'
【发布时间】:2018-10-27 05:00:48
【问题描述】:

我尝试了很多方法来解决这个问题,但很遗憾未能找到解决方案。这是我调用寻呼机适配器的主要活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);


    sliderAdapter = new _SliderAdapter(Activity.this);

    intro_view_pager = findViewById(R.id.intro_view_pager);
    intro_view_pager.setAdapter(sliderAdapter);





}

这是我的寻呼机适配器类。我正在尝试获取资源字符串,但上下文总是为空:

    static Context mcontext;
    LayoutInflater layoutInflater;

    public Wazu_SliderAdapter(Context context){
        this.mcontext =context;
    }


    @Override
    public int getCount() {
        return slide_headings.length;
    }


    public String[] slide_headings={



      mcontext.getResources().getString(R.string.headng1),

    };


    public String[] slide_description={

            mcontext.getString(R.string.string1),

    };

    public int[] slide_Images={

            R.drawable.image1,
            R.drawable.image2,

    };





    @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) mcontext.getSystemService(mcontext.LAYOUT_INFLATER_SERVICE);

        View view=layoutInflater.inflate(R.layout.slider_layout,container,false);

        ImageView imageView=view.findViewById(R.id.intro_image);
        TextView heading_text=view.findViewById(R.id.intro_heading_textView);
        TextView description=view.findViewById(R.id.intro_textView_description);

        imageView.setImageResource(slide_Images[position]);
        heading_text.setText(slide_headings[position]);
        description.setText(slide_description[position]);

        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((RelativeLayout)object);

    }
}

【问题讨论】:

标签: android


【解决方案1】:

在方法 instantiateItem

中代替这一行
layoutInflater=(LayoutInflater) mcontext.getSystemService(mcontext.LAYOUT_INFLATER_SERVICE);
View view=layoutInflater.inflate(R.layout.slider_layout,container,false);

这样使用,

View view = LayoutInflater.from(container.getContext()).inflate(R.layout.slider_layout,container,false);

问题是 context 传递正在得到 null

& 对于getCount 方法使用如下:

@Override
public int getCount() {
    return mcontext.getResources().getString(R.string.headng1).length;
}

您在此处声明时使用上下文

public String[] slide_description={
    mcontext.getString(R.string.string1),
};

这就是为什么它是 null

【讨论】:

  • 亲爱的 Jeel Vankhede 感谢您的帮助,请多帮帮我...
  • 我想知道我如何在这个方法中获取资源字符串,因为我仍然得到错误 public String[] slide_description={ mcontext.getString(R.string.string1), };
  • 你能解释一下你在用slide_description做什么吗?
  • 幻灯片描述也是字符串,我在 viewpager 的所有页面中都使用这个字符串来解释一些事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 2020-04-17
  • 2020-02-09
  • 2020-03-08
  • 2012-05-26
相关资源
最近更新 更多