android - 操作栏项目重复

标签 android android-fragments android-actionbar android-actionbar-compat

我的应用程序中有操作栏。我正在使用 menu.xml 添加操作项。我使用 action bar-compat 作为我的支持库。我观察到一个奇怪的问题,即我的操作项被重复。

当我的设备闲置或使用其他应用程序时,我随机发现此问题。请在下面找到屏幕截图和我的代码:

private LoginWebActivity mContext;
private final String TAG = "LoginFragment";

// for metrics
private String mPageNameSignIn = "signin";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.webview, container, false);

    return mView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mContext = (LoginWebActivity) getActivity();
    initFragment();

}

@Override
public void onResume() {

    super.onResume();
}

/**
 * Initialises the views and variables of the fragment.
 */
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
protected void initFragment() {


    mWebView = (WebView) mView.findViewById(R.id.webView);
    Bundle b = mContext.getIntent().getExtras();
    if (b != null) {
        mUrl = b.getString(Constants.EXTRA_WEB_LOGIN_URL);
    }
    super.initFragment();

    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.signin, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Navigate
    switch (item.getItemId()) {
    case R.id.menu_item_signup:
        mContext.onSignUpClick();
        break;
    case android.R.id.home:
        if (!goBack())
            getActivity().finish();
    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

我的 XML :

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/menu_item_signup"
    allergy:showAsAction="ifRoom"
    android:title="@string/sign_up">
</item>

enter image description here

最佳答案

您必须在添加项目之前清除您的菜单对象。我遇到了同样的问题,这是我找到的最佳解决方案。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
    inflater.inflate(R.menu.signin, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

关于android - 操作栏项目重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787318/

相关文章:

android - 能否画出 Fragment 及其父 FragmentActivity 的生命周期?

android - 在 Fragment 或 Activity 中使用工具栏

android - 使 Activity 出现在 'wallpaper chooser'

android - 具有不同项目布局的 ListView 的 ViewHolders

android - popBackStackImmediate 在当前 fragment 事务未添加到后台堆栈时不显示 fragment

android - 尝试隐藏操作栏项目时出现 NullPointerException

android - 透明状态栏与操作栏重叠

android - 图标图像未出现在 Chrome 的智能横幅中

android - Unresolved reference : Libraries - buildSrc

java - android studio 中的 Tabitem 绑定(bind)