I've used a pretty standard implementation of the ShareActionProvider in my actionbar and it works fine. However, when I start another activity from an actionbutton in the actionbar and return from that activity the dropdownmenu of the SharedActionProvider is automatically opened.
This behavior doesn't occur when I execute the exact same code to open another activity from a normal button.
Here is my menu xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_btn_my_scedule"
android:icon="@drawable/ic_menu_my_calendar"
android:title="To Scedule"
android:showAsAction="ifRoom" />
<item android:id="@+id/menu_btn_share"
android:title="Share.."
android:showAsAction="ifRoom"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item android:id="@+id/menu_btn_set_scedule"
android:icon="@drawable/ic_menu_today"
android:title="Set Scedule"
android:showAsAction="collapseActionView"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item android:id="@+id/menu_btn_settings"
android:icon="@drawable/ic_menu_manage"
android:title="Settings"
android:showAsAction="collapseActionView"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item android:id="@+id/menu_btn_feedback"
android:icon="@drawable/ic_menu_manage"
android:title="Feedback/Question"
android:showAsAction="collapseActionView"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item android:id="@+id/menu_btn_about"
android:icon="@drawable/ic_menu_info_details"
android:title="About"
android:showAsAction="collapseActionView"
android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>
The other menu methods:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.optionsmenu, menu);
MenuItem actionItem = menu.findItem(R.id.menu_btn_share);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
actionProvider.setShareIntent(createShareIntent());
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return false;
case R.id.menu_btn_my_scedule:
Intent i = new Intent(ONTTOptions.this, ONTTShowScedule.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
startActivity(i);
return true;
case R.id.menu_btn_set_scedule:
i = new Intent(ONTTOptions.this, ONTTScedule.class);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
startActivity(i);
return true;
case R.id.menu_btn_settings:
i = new Intent(ONTTOptions.this, ONTTPreferences.class);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
startActivity(i);
return true;
case R.id.menu_btn_feedback:
showFeedbackDialog();
return true;
case R.id.menu_btn_about:
i = new Intent(ONTTOptions.this, ONTTAboutActivity.class);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
startActivity(i);
return true;
default: return super.onOptionsItemSelected(item);
}
}
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "https://play.google.com/store/apps/details?id=" + ONTTConfig.PACKAGE_NAME);
return shareIntent;
}
I must have missed something somewhere, thanks for any help.
I found the problem. I thought android:actionProviderClass="android.widget.ShareActionProvider" was also needed on every actionbar item I wanted in the overflow menu. I simply removed it on every item except the share button ofcourse.
My menu xml now looks like this:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_btn_my_scedule"
android:icon="@drawable/ic_menu_my_calendar"
android:title="To Scedule"
android:showAsAction="ifRoom" />
<item android:id="@+id/menu_btn_share"
android:title="Share.."
android:showAsAction="ifRoom"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item android:id="@+id/menu_btn_set_scedule"
android:icon="@drawable/ic_menu_today"
android:title="Set Scedule"
android:showAsAction="collapseActionView" />
<item android:id="@+id/menu_btn_settings"
android:icon="@drawable/ic_menu_manage"
android:title="Settings"
android:showAsAction="collapseActionView" />
<item android:id="@+id/menu_btn_feedback"
android:icon="@drawable/ic_menu_manage"
android:title="Feedback/Question"
android:showAsAction="collapseActionView" />
<item android:id="@+id/menu_btn_about"
android:icon="@drawable/ic_menu_info_details"
android:title="About"
android:showAsAction="collapseActionView" />
</menu>