1

アクションバーで 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;
}

どこかで何かを見逃したに違いありません。助けてくれてありがとう。

4

1 に答える 1

0

問題が見つかりました。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>
于 2012-06-18T08:59:12.087 に答える