我的项目在创建主要活动时有一个NullPointerException。主要活动创建一个片段,这是异常所在的位置。 这是它破坏的部分的代码: 片段代码:
Drawable red;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getActivity().setContentView(R.layout.main_layout);
red = ((ImageView)this.getActivity().findViewById(R.drawable.icon_0)).getDrawable();
}
活动代码:
private ProblemFragment problemFrag;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
problemFrag = new ProblemFragment();
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = bar.newTab().setText("Problem Fragment").setTabListener(new MyTabListener(this, dashboardFrag));
bar.setHomeButtonEnabled(true);
}
当它跑过红色的drawable时崩溃了。这是因为“getActivity()”行吗?必须立即实例化这些值,但我想不出一种在不使用findById的情况下加载它们的方法。如果有帮助,它们是res文件夹中的PNG文件。
答案 0 :(得分:2)
试试这个:
Drawable red = getResources().getDrawable(R.drawable.icon_0);
对于未在xml中声明视图的所有资源
答案 1 :(得分:1)
在这种情况下的最佳解决方案是使用getResources().getDrawable()
这样的方法:
red = getActivity().getResources().getDrawable(R.drawable.icon_0);
请将它用于res
文件夹中的每个drawables等。