Android:导航片段时更改活动标题;单击后退按钮时返回相同的标题

时间:2015-03-25 15:15:52

标签: android android-fragments

我有一个名为 categories_collection 的片段,应用程序最初使用此片段启动,活动标题是应用程序标题。

  

第1类   第2类
     - 类别2.1
     - 类别2.2
  第3类

我所做的是当用户点击有孩子的类别时,我会使用名为 parent 额外字段重新调用相同的 categories_collection 片段加载被点击类别的子类别。这一切都已完成并且运作良好。

我需要的是以下

  1. 用户点击类别2.主要活动标题更改为“类别2”
  2. 用户现在正在点击孩子时浏览“类别2”的孩子。活动标题更改为子类别名称,即“类别2.1”,依此类推..
  3. 最重要的是,当点击“后退按钮”时,活动的标题会更改为它的内容。所以我说我从打开子类别回来,所以标题再次变为“类别2”,因为我一直在浏览“类别2”的孩子
  4. 我希望这能解释我的需要。

    感谢。

2 个答案:

答案 0 :(得分:0)

创建一个方法并在反向调用它:

void onBack() {
//Find all your fragments with id
        Categroy_Child_Fragment fr = (Categroy_Child_Fragment) fragmentManager
                .findFragmentByTag("list_items");

        Final_Categories_Fragment fr1 = (Final_Categories_Fragment) fragmentManager
                .findFragmentByTag("last");
        Grid_View_Fragment_For_All fr2 = (Grid_View_Fragment_For_All) fragmentManager
                .findFragmentByTag("grid_view");


//Then check if they are null or not and according to that remove them and settitle to actionbar

        if (fr2 != null) {
            fragmentManager
                    .beginTransaction()
                    .setCustomAnimations(R.anim.out_to_left, R.anim.out_to_left)
                    .remove(fr2).commit();

            actionBar.setTitle("title");
        } else if (fr1 != null) {
            fragmentManager
                    .beginTransaction()
                    .setCustomAnimations(R.anim.bottom_down, R.anim.bottom_down)
                    .remove(fr1).commit();

            actionBar.setTitle("title");

        } else if (fr != null) {
            fragmentManager.beginTransaction()
                    .setCustomAnimations(R.anim.right_out, R.anim.right_out)
                    .remove(fr).commit();

            actionBar.setTitle(R.string.all_cat);

        } else {

            super.onBackPressed();
        }
    }

答案 1 :(得分:-1)

在每个应该改变其活动标题的片段中,我在片段的onResume()方法中放了这样的东西。

@Override
public void onResume() {
    super.onResume();
    ((ParentActivity) getActivity()).setTitle("FragmentTitle"); 
}

然后你必须在你的活动中创建应该改变其标题的setTitle(字符串标题)方法。