2013-07-30 112 views
0

我的項目創建主要活動時有NullPointerException。主要活動創建一個片段,這是異常所在。 下面是它打破了部分代碼: 片段代碼:Android的NullPointerException在onCreate

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文件。

+0

在顯示片段之前,您是否在Activity中調用了setContentView? –

回答

1
在這種情況下

最好的解決辦法是使用getResources().getDrawable()方法類似:

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

請將它用於您的res文件夾中的每個可繪製對象等。

+0

我這樣做了,現在我得到一個IllegalStateException,指出該片段沒有正確連接到活動。 –

+0

@shravyanga立即嘗試 – TN888

+0

雖然getActivity引起了早期的NullPointerException異常...:/ –

2

試試這個:

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

對於所有的資源未在XML聲明的看法

相關問題