onCreate中的Android NullPointerException

时间:2013-07-30 16:56:56

标签: android

我的项目在创建主要活动时有一个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文件。

2 个答案:

答案 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等。