我在动作栏中使用了ShareActionProvider的非常标准的实现,并且工作正常。但是,当我从操作栏中的操作按钮开始另一个活动并从该活动返回时,SharedActionProvider的下拉菜单会自动打开。

当我执行完全相同的代码从普通按钮打开另一个活动时,不会发生此行为。

这是我的菜单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>


其他菜单方法:

@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;
}


我一定在某处错过了什么,谢谢您的帮助。

最佳答案

我发现了问题。我以为android:actionProviderClass =“ android.widget.ShareActionProvider”
在溢出菜单中我想要的每个操作栏项目上也都需要它。我只是简单地删除了课程共享按钮以外的所有项目。

我的菜单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" />
<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>

09-08 05:56