0

我正在寫一個涉及多個活動的應用程序:它們中的每一個都由更多的片段組成。在幾乎每個片段中,我想要設置不同的工具欄 ...我應該在哪裏做?我曾經做過onCreate()onCreateView()中的幾乎所有內容,但現在我問自己:也許把它放在onStart()中更正確? 我知道活動和片段生命週期如何工作......但我沒有找到我的具體情況的答案。 這是我在一個片段中使用的代碼:在哪裏設置工具欄的片段? onCreate()或onStart()?

// Toolbar setup 
setHasOptionsMenu(true); 
AppCompatActivity activity = (AppCompatActivity) getActivity(); 
ActionBar actionBar = activity.getSupportActionBar(); 
if (actionBar != null) 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    Toolbar tb = (Toolbar) activity.findViewById(R.id.toolbar_main); 
    tb.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      FragmentManager mng = getFragmentManager(); 
      mng.popBackStack(); 
     } 
    }); 
if (activity.getSupportActionBar() != null) 
    activity.getSupportActionBar().setTitle(R.string.toolbar_title); 
    tb.setVisibility(View.VISIBLE); 

這裏是activity_main.xml文件的一部分,其中R.id.toolbar_main定義:

<!--- [...] ---> 
<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar_main" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
</android.support.design.widget.AppBarLayout> 
<!--- [...] ---> 

回答

0

做在.onCreate()方法 - 看到谷歌的材質設計樣本項目:https://github.com/chrisbanes/cheesesquare

+1

感謝您的回答。即使每個片段的特定更改最好放在相對片段的onCreate()中?在鏈接的示例項目中,我發現只有在活動中才發現片段中的工具欄未發生更改。 – Robb1

+0

那麼,工具欄只是佈局中的另一個視圖,應該是用另一個視圖定製的alog。 –

0

嗯,我會建議把工具欄在你活動類。您可以根據需要創建自定義工具欄。在調用片段期間,您可以通過調用方法在您的活動或片段上進行更改(顏色,主題等)。

+1

我的問題主要是關於'onCreate()'和'onStart()'方法!你在哪裏把這些改變放在你所說的片段中?有沒有實質性的區別? – Robb1

1

包括在你的活動工具欄和顏色變化,職稱等在你的片段。