从不同的Layout更改ImageView时的Android NPE

时间:2011-07-24 06:23:07

标签: android imageview nullpointerexception

我正在尝试使用代码等在不同的布局中更改ImageView:

        ImageView imageView;
        imageView = (ImageView) findViewById(R.id.imageView1);

        imageView.setImageResource(R.drawable.wizardhat);

但是NPE在R.drawable.wizardhat上,因为它不知道它属于什么布局,显然,它不在根布局中:

  

-main [两个包含的位置]
  -layout1 [包含代码的地方]
  -layout2 [图像所在的位置]

编辑:好的,我没有真正解释过:代码运行的视图位于tabview中。保存选项卡视图的布局包含一个包含到我正在尝试编辑的ImageView的布局。我没有正确地说出我的问题,我现在就编辑它:L

这可能吗?谢谢:))

2 个答案:

答案 0 :(得分:0)

实际上,它是imageView上的NPE,因为在膨胀任何视图之前,您应该将其根布局设置为您的活动的内容视图。如果您的ImageView属于layout1,则必须确保它是活动的当前内容视图,然后您可以在代码中的任何位置对其进行充气。如果layout1目前不是内容视图,findViewById()将返回null。我希望我能正确理解你的问题。

答案 1 :(得分:0)

我为我的应用做的是:

inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);   
layout = inflater.inflate(R.layout.play_grid,(ViewGroup)findViewById(R.id.play_layout_root));
gridview = (GridView)layout.findViewById(R.id.play_gridview); 
  • play_grid是保存gridview的xml
  • play_layout_root是此xml布局的根ID;
  • play_gridview是我需要的gridview的id。

你可以将它用于你的问题。