-1

我想在我的android应用程序的一个`onCreateOptionsMenu(菜单菜单)下添加多个活动,我已经添加了两个活动并且它们工作正常但第三个活动不工作,以下是我的代码

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

嘿,我认为这会有所帮助...您已经编写了 android:showAsAction="never"
因此,将图标放在菜单图标内(工具栏上的三个点)会产生错误。因此,为此属性设置值“always”“ifRoom” 。希望这会工作:-)

于 2016-07-04T21:59:35.487 回答
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 回答