2014-10-26 62 views
6

我正在使用模板創建的NavigationDrawer(當啓動一個新項目時)。 我試圖讓材質設計兼容性,所以我使用AppCompat v7。 我跟着these instructions設置工具欄作爲我的動作條(即使用setSupportActionBar我的工具欄上),我在(內onCreateView)NavigationDrawerFragment不能與AppCompat工具欄一起使用

mDrawerListView.setAdapter(new ArrayAdapter<String>(
      getActionBar().getThemedContext(), 
      android.R.layout.simple_list_item_activated_1, 
      android.R.id.text1, ... 

現在我懷疑的問題讓我NavigationDrawerFragment一個NPE與getActionBar()我呼籲NavigationDrawerFragment設置()之前調用活動的onCreate setSupportActionBar(工具欄)...

我 -

private ActionBar getActionBar() { 
    return ((ActionBarActivity) getActivity()).getSupportActionBar(); 
} 

,但我不知道爲什麼:內部片段的方法如果任何人有一個線索爲什麼發生這種情況請幫助!

回答

6

這似乎是問題是,片段的onCreateView是活動的onCreate之前調用,因此沒有動作條設置更換getActionBar().getThemedContext()。我只是將有問題的代碼移動到片段的onActivityCreated中,它就像一個魅力。

+0

請你詳細說明一下嗎? – bernlim 2015-03-27 05:34:37

+0

@bernlim 當然。問題是當我的活動正在創建時,片段的onCreateView方法在活動的onCreate之前被調用。 NPE出現在片段的onCreateView中,因爲我嘗試獲取當時爲空的操作欄,因爲活動的onCreate尚未被調用,所以ActionBar還沒有被初始化/設置/創建。 這有道理嗎? – Djordje 2015-09-03 13:45:38

4

只是getActivity()

+1

但getActivity()不等於getActionBar()。getThemedContext(),儘管它可以給上下文。 – 7383 2015-06-13 13:52:18

相關問題