android 应用程序中的共享按钮在 showAsAction 始终或 ifroom 时不起作用

share button in android app is not working when showAsAction is always or ifroom

我正在开发一个 android webview 应用程序,我在操作栏上添加了共享操作,当 showAsAction 为“从不”时它工作正常,但一旦我将其更改为 'always' 就停止工作或 'ifRoom'` 我的代码是:

 private ShareActionProvider mShareActionProvider;

 @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();
     }
     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!"));
 }

如果有人能帮忙,谢谢。

你确定你真的有 space 来显示它吗?

您可以尝试禁用标题,看看是否创造了足够的空间:

ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);

更新:

你可以尝试使用:

public void setOnMenuItemClickListener (Toolbar.OnMenuItemClickListener listener)

我相信工具栏有一个与下拉菜单不同的监听器。

代码可能类似于:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Toolbar tb = (Toolbar) findViewById(R.id.toolbar_id);

tb.inflateMenu(R.menu.menu);
tb.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {


// Menu item should be returned here (the one you tap on the toolbar)

        return false;
    }
});

}

删除 android:actionProviderClass="android.widget.ShareActionProvider" 并添加 android:icon="@drawable/image-name"