当使用返回按钮时,Android更改标题

6 浏览
0 Comments

当使用返回按钮时,Android更改标题

我的活动:

TextView title;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Overview overview = new Overview();
    setContentView(R.layout.activity_second);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.mycontainer, overview)
                .commit();
    }
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
    //一些其他代码
    title = (TextView) toolbar.findViewById(R.id.screentitle);
    title.setText("概览");
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    switch(item.getItemId()){
        case R.id.nav_menu_overview:
            title.setText("概览");
            getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Overview()).addToBackStack(null)
                    .commit();
            break;
        case R.id.nav_menu_favourites:
            title.setText("收藏");
            getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Favourites()).addToBackStack(null)
                    .commit();
            break;
        case R.id.nav_menu_profile:
            title.setText("个人资料");
            getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Profile()).addToBackStack(null)
                    .commit();
            break;
    }

目前,如果我使用菜单更改片段,标题会更改。然而,如果我使用Android返回按钮,标题不会改回。如何在使用返回按钮时将标题更改回来?

0
0 Comments

问题出现的原因:

在使用返回按钮时,Android应用程序的标题没有改变。

解决方法:

将活动标题更改的代码放在活动的onResume()方法中。

protected void onResume() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
    //Some more code 
    title = (TextView) toolbar.findViewById(R.id.screentitle);
    title.setText("Overzicht");
}

0
0 Comments

问题出现的原因是在使用返回按钮时,标题没有随之改变。解决方法是通过重写活动的onBackPressed方法来处理这种情况。另一种更好的方法是在片段的onViewCreated方法中设置标题,这样无论哪个片段处于顶部,都会自动设置所需的标题。例如,在片段中设置标题的代码如下:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("你想要设置的标题");

此外,不要在onNavigationItemSelected方法中设置标题,该方法应该用于导航而不是设置标题。

0