0

创建主要活动时,我的项目有 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);
}

当它跑过红色可绘制对象时会崩溃。这是因为“getActivity()”行吗?必须立即实例化这些值,但我想不出不使用 findById 来加载它们的方法。如果有帮助,它们是 res 文件夹中的 PNG 文件。

4

2 回答 2

2

尝试这个:

Drawable red = getResources().getDrawable(R.drawable.icon_0);

对于您的 xml 中未声明视图的所有资源

于 2013-07-30T17:00:55.717 回答
1

在这种情况下,最好的解决方案是使用getResources().getDrawable()这样的方法:

red = getActivity().getResources().getDrawable(R.drawable.icon_0);

请将它用于您res文件夹中的每个可绘制对象等。

于 2013-07-30T17:03:59.110 回答