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

包括在你的活动工具栏和颜色变化,职称等在你的片段。