在片段中设置工具栏的位置? onCreate()或onStart()?

时间:2016-11-19 10:02:03

标签: android android-fragments android-toolbar android-lifecycle

我正在编写一个涉及多个活动的应用程序:每个活动都由更多碎片组成。在几乎每个片段中,我想设置一个不同的工具栏 ...我应该在哪里这样做?我过去常常在onCreate()onCreateView()内做所有事情,但现在我问自己:将它放在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的{​​{1}}文件的一部分:

R.id.toolbar_main

3 个答案:

答案 0 :(得分:1)

在您的活动中添加工具栏,并在您的片段中更改颜色,标题等。

答案 1 :(得分:0)

我建议将工具栏放在Activity类上。您可以根据需要创建自定义工具栏。在调用片段期间,您可以通过调用方法在您的活动或片段中进行更改(颜色,主题等)。

答案 2 :(得分:0)

在.onCreate()方法中执行此操作 - 请参阅Google的材料设计示例项目:https://github.com/chrisbanes/cheesesquare