【问题标题】:How change Actionbar title by switching between Fragments如何通过在 Fragment 之间切换来更改 Actionbar 标题
【发布时间】:2015-04-10 09:20:44
【问题描述】:

当应用程序启动时,我有一个带有两个片段的应用程序,Actionbar 标题是第一个片段之一。但是当我进入第二个片段时,标题并没有改变。

那么如何更改 ActionBar 的标题?

这是我的代码:

public class ClientList extends Fragment {

    @Override
    public void onResume() {
        super.onResume();
        String title;
        title = getResources().getString(R.string.client_title);
        ActionBarActivity action = ((EmployeeActivity)getActivity());
        action.getSupportActionBar().setTitle(title);

    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        String title2;
        title2 = getResources().getString(R.string.action_settings);
        ActionBarActivity action = ((EmployeeActivity)getActivity());
        action.getSupportActionBar().setTitle(title2);

    }
}

【问题讨论】:

  • getActivity().setTitle(title)?你应该把你的onDestroyView() 逻辑放在super.onDestroyView() 之前,销毁序列应该与创建序列相反。另外我认为您应该更改新片段中的新标题,而不是在当前片段被销毁时更改,如果您只是将其隐藏或放入后堆栈,则可能不会发生这种情况。
  • 你想改两次还是什么?刚刚创建片段时,您是否尝试在onCreateView 中更改它?
  • @Yurets 我想在每次在片段之间切换时更改标题。我试过 onCreateView 但我得到一个无法访问的语句错误

标签: android android-fragments android-actionbar


【解决方案1】:

所以如果您说您无法从onCreateView 访问该方法,那么我认为这是您的解决方案:

@Override
   public View onCreateView(LayoutInflater inflater, 
                  ViewGroup container, Bundle savedInstanceState) {         
          View view =  inflater.inflate(R.layout.my_fragment,
                          container, false);
          getActivity().setTitle("Title"); 
          return view;
  }

因为如果您在致电setTitle() 之前先return,您就无法联系到它,这是真的。 希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您可以在 onCreate(if activity)/onCreateView(if fragment) 方法中将操作栏标题设置为getSupportActionBar().setTitle("Your Title");

    【讨论】:

      【解决方案3】:

      每当您从一个片段切换到另一个片段时,您都可以在 ActionBar 中设置标题。这可以在片段的 onCreateView(...) 上完成。建议尝试在您尝试加载片段的 Activity 中更改名称。 这样做....

      如果您使用的是 appcompat 库

      ActionBar actionBar = getSupportActionBar(); actionBar.setTitle(" your title ");

      如果你没有使用 appcompat 库

      ActionBar actionBar = getActionBar(); actionBar.setTitle(" your title ");

      【讨论】:

        【解决方案4】:

        这应该可行:

        getActivity().setTitle(YOUR_TITLE);
        

        当你想设置时,从你的 Fragment 调用它。

        【讨论】:

          猜你喜欢
          • 2022-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-22
          相关资源
          最近更新 更多