-1

Android アプリの 1 つの `onCreateOptionsMenu(メニュー メニュー) の下に複数のアクティビティを追加したいのですが、既に 2 つのアクティビティを追加しており、それらは正常に動作していますが、3 番目のアクティビティは動作していません。以下は私のコードです。

onCreateOptionsMenu(Menu menu)

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public final boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_item_share:
            shareURL();
    }
    if(item.getItemId() == R.id.menu_item_refresh){
        mWebView.reload();
        return true;
    }
    if(item.getItemId() == R.id.share_this_app)
        mShareActionProvider.setShareIntent(getDefaultShareIntent());
    return super.onOptionsItemSelected(item);
}


private void shareURL() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, mWebView.getUrl());
    startActivity(Intent.createChooser(shareIntent, "Share This Website!"));
    shareIntent.setPackage("com.whatsapp");
}


/** Returns a share intent */
private Intent getDefaultShareIntent(){
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_SUBJECT, "download the app");
    intent.putExtra(Intent.EXTRA_TEXT," play.google.com ");
    return intent;
}

menu_main.xml

<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

<item
    android:title="@string/share"
    android:id="@+id/menu_item_share"
    android:showAsAction="always"
    android:icon="@drawable/share"
    />

<item
    android:id="@id/menu_item_refresh"
    android:title="Refresh"
    android:showAsAction="never"
    android:icon="@drawable/refresh"
    />

<item
    android:id="@+id/share_this_app"
    android:title="Share this app"
    android:showAsAction="never"
    android:actionProviderClass="android.widget.ShareActionProvider"/>

上記より、menu_item_share と menu_item_refresh は動作していますが、Share this app は動作していません。

4

2 に答える 2

0

おそらく、この行の下に return true ステートメントがありません mShareActionProvider.setShareIntent(getDefaultShareIntent()); . クリーンな構造に従うだけで、タスクを達成できます。

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_item_share: {
        shareURL();
        break; //or, return true;
    }
    case R.id.menu_item_refresh: {
        mWebView.reload();
        break; //or, return true;
    }
    case R.id.share_this_app: {
        mShareActionProvider.setShareIntent(getDefaultShareIntent());
        break; //or, return true;
    }
    return super.onOptionsItemSelected(item);
}
于 2016-07-04T17:57:39.053 に答える