アプリケーションにアクション バーがあります。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>