Bug 1315937 - Only create option menu items once.
Menu items in CustomTabsActivity are static. Not necessary to create
items several times. However `onPrepareOptionsMenu()` will be called
before menu is shown.
Cannot use `onCreateOptionsMenu()` due to GeckoApp overwrited
`onCreatePanelMenu()` and pass different instance to sub-class. Since
CustomTabsActivity does not use custom menu, just overwrite
`onCreatePanelMenu()` should be safe.
MozReview-Commit-ID: 2oTN85GurqS
--- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
@@ -201,20 +201,24 @@ public class CustomTabsActivity extends
final Tab tab = tabs.getTab(lastSelectedTabId);
if (tab == null) {
finish();
}
}
super.onResume();
}
+ // Usually should use onCreateOptionsMenu() to initialize menu items. But GeckoApp overwrite
+ // it to support custom menu(Bug 739412). Then the parameter *menu* in this.onCreateOptionsMenu()
+ // and this.onPrepareOptionsMenu() are different instances - GeckoApp.onCreatePanelMenu() changed it.
+ // CustomTabsActivity only use standard menu in ActionBar, so initialize menu here.
@Override
- public boolean onPrepareOptionsMenu(Menu menu) {
+ public boolean onCreatePanelMenu(final int id, final Menu menu) {
insertActionButton(menu, getIntent());
- return super.onPrepareOptionsMenu(menu);
+ return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_button: