我试图改变一个ImageView在不同的布局使用代码等:
ImageView imageView;
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageResource(R.drawable.wizardhat);
但是它的NPE在r。drawable。wizard上因为它不知道它属于哪个布局,显然,它不在根布局中:
-main [include所在的位置]
-layout1[包含代码的地方]
-layout2[图像所在位置]
编辑:好吧,我没有真正解释它:代码运行的视图是在tabview内部。持有选项卡视图的布局包含一个包含我试图编辑的ImageView的布局。我的问题没说对,我现在编辑一下:L
这可能吗?谢谢:)
实际上,NPE在imageView
上,因为在膨胀任何视图之前,您应该将其根布局设置为活动的内容视图。如果您的ImageView
属于layout1
,您必须确保它是活动的当前内容视图,然后您可以在代码中的任何地方膨胀它。如果layout1
现在不是内容视图,findViewById()
将返回null。我希望我正确理解了你的问题。
我为我的应用程序做的是:
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。
你可以把它用在你的问题上。