我是android片段开发的新手。按下后退按钮时出现此问题...即使我在以下位置使用myActivity.invalidateOptionMenu()和getActionBarActivity.setTitle(),操作栏菜单及其标题也不会更新:onAttach,onDetach,onCreate,onCreateView和onCreateOptionMenu我清除了菜单,但是一切都没有用!当我使用抽屉布局重新实例化片段时,有时会再次遇到相同的问题!例如我有ListingFragment,EditingFragment,DetailsFragment和ImportFragment这是带有EditingFragment选项的ListingFragmentPS:当我回到编辑片段时,菜单不起作用,不再可用!
检查屏幕截图here
我遇到的第二个问题是,片段有时会被添加到同一容器中,请参见下面的截屏! “ import”一词是ImportFragment所包含的内容(加上操作栏标题),而打开片段DetailsFragment时,其他视图(包括菜单)在屏幕上。一旦我点击了片段中的导入按钮,它将显示以下屏幕!
检查屏幕截图here
有人知道如何重新排列内容以获得良好的工作应用程序吗?
这里是相关代码:
private void setActionBarTitle(String title) {
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle(
title);
}
public void restoreActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.clear();
return super.onCreateOptionsMenu(menu);
}
public void restoreMenu()
{
restoreActionBar();
this.invalidateOptionsMenu();
}
对于任何可能也面临相同问题的人,我已经找到了解决方法(或方法)
菜单问题:我添加的片段不是“替换它们”。每次片段没有任何“选项菜单”时,都会将最后一个菜单添加到操作栏中。您要么停止添加并开始替换片段,要么为新的“空”菜单充气。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
setHasOptionsMenu(true);
menu.clear();
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
主要是:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mypackage.MainActivity" > </menu>
返回按钮问题:将以下代码添加到您的活动中:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
this.finish(); } else {
getSupportFragmentManager().popBackStack();
if(fragmentX.isResumed())
getSupportActionBar().setTitle("the title");
}
}
PS:您可以使用isResumed或isVisible。与操作栏标题相关的所有内容:保留对您添加的片段的引用。您既可以使用片段本身来更改操作栏标题,也可以通过使用以下活动来变通并更改标题:
if(fragmentX.isVisible()) getSupportActionBar.setTitle(getString(R.string.your_string_name));