gpt4 book ai didi

android - 操作栏标题不变

转载 作者:行者123 更新时间:2023-11-30 02:23:00 26 4
gpt4 key购买 nike

我有带抽屉导航的 MainActivity。这是 MainActivity.java 中的两个函数

    @Override
public void onNavigationDrawerItemSelected(int position) {
Fragment fragment;
FragmentManager fragmentManager = getSupportFragmentManager();
switch(position) {
default:
case 0:
fragment = new AlarmClockFragment().newInstance(position);
break;
case 1:
fragment = new SettingsFragment().newInstance(position);
break;
}
fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();
}

public void onSectionAttached(int number) {
switch (number) {
case 0:
mTitle = getString(R.string.title_section1);
break;
case 1:
mTitle = getString(R.string.title_section2);
break;
}
}

在每个 fragment 中,我都有更改操作栏标题的方法。我是这样做的:

我有:

private static final String ARG_SECTION_NUMBER = "section_number";
private int mSectionNumber = 0;
private OnFragmentInteractionListener mListener;

我得到 ARG_SECTION_NUMBER:

    public static AlarmClockFragment newInstance(int param1) {
AlarmClockFragment fragment = new AlarmClockFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, param1);
fragment.setArguments(args);
return fragment;
}

    @Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
((MainActivity) activity).onSectionAttached(mSectionNumber);
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}

代码类似于两个 fragment (AlarmCLockFragment 和 SettingsFragment),但它不起作用。

如果我不使用变量 mSectionNumber 而只写 ((MainActivity) activity).onSectionAttached(0); 一切都会很好。所以我找不到初始化mSectionNumber的问题。

在这里设置标题():

public void restoreActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
}

fragment 中的 onCreate():

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mSectionNumber = getArguments().getInt(ARG_SECTION_NUMBER);
}
}

最佳答案

为什么不直接让 Fragments 设置标题呢?

onActivityCreated 或类似调用中:

((ActionBarActivity) getActivity()).getSupportActionBar().setTitle(...)

编辑:您的特定问题的解决方案是在 fragment 生命周期中 onCreate 之前调用 onAttach 。这是一个很好的资源:http://staticfree.info/~steve/complete_android_fragment_lifecycle.png

关于android - 操作栏标题不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com