android - ActionBar 标题随 fragment 动态变化

标签 android android-fragments android-actionbar

我有 1 个 Activity,里面有 3 个 Fragments (Home-Login-RestorePass) 最初,HomeFragment 显示,另外两个隐藏。我希望 ActionBar 标题根据显示的 fragment 而改变。

我在我的 Activity 中尝试:

public void setActionBarTitle(String title){
    getSupportActionBar().setTitle(title);
}

@Override
public void onResume() {
    super.onResume();
    // Set title
    setActionBarTitle(getString(R.string.app_name));
}

和 fragment 有相同的:

@Override
public void onResume() {
    super.onResume();
    // Set title
    ((LoginActivity) getActivity()).setActionBarTitle(getString(R.string.fragment_login));
}

但它不起作用。它总是在标题上显示 R.string.fragment_login

我正在使用 FragmentTransaction 进行 fragment 转换:

btnLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
            HomeFragment homeFragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.fragmentHome);
            LoginFragment loginFragment = (LoginFragment) getFragmentManager().findFragmentById(R.id.fragmentLogin);
            ft.hide(homeFragment).addToBackStack(null);
            ft.show(loginFragment).addToBackStack(null).commit();
        }
    });

此外,如果我可以根据 fragment 在 ActionBar 上显示一个箭头按钮(返回),那就太好了。

感谢您的宝贵时间!问候。

最佳答案

请记住,如果您使用的是支持库,则必须在通过 getActivity() 获取 Activity 时专门对其进行转换。然后您需要确保使用 getSupportActionBar() 检索支持 ActionBar。我能够在我的 fragment 的 onResume()...

中使用以下代码在我的应用程序中设置 ActionBar 标题
@Override
public void onResume() {
    super.onResume();
    AppCompatActivity activity = (AppCompatActivity) getActivity();
    ActionBar actionBar = activity.getSupportActionBar();
    actionBar.setTitle(R.string.my_fragment_title);
}

关于android - ActionBar 标题随 fragment 动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159471/

相关文章:

Eclipse 中的 Android NDK::(无法运行程序 "ndk-build":未知原因)

android - 手机无法访问本地网络中的Tomcat服务器

Android 在 View Pager 中替换 Fragment

android - 如何在所有 Activity 中保持操作栏固定?

android - setSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误

java - 长按打开操作栏菜单 - Android

android - React Native 即时渲染

android - 如何确定其他应用程序失去音频焦点以便我可以启动我的播放器

android - 包裹 : unable to marshal value - Fragments

android - 这段代码使用 ViewPager 有什么问题?