3

我要禁用ShareActionProvider在 ActionBar 的操作模式中显示的功能。但

menu.findItem(R.id.myShareItem).setEnabled(false)  

不会禁用它。我错过了什么或者它不能被禁用?

更新:

在 Jelly Bean 上进行测试,这个独立的 Activity 类演示了这个问题:

package com.example;

import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.MimeTypeMap;
import android.widget.ShareActionProvider;
import android.widget.Toast;

public class MyActivity extends Activity {

    private MenuItem mShareItem;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        ShareActionProvider sap = new ShareActionProvider(this);

        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType(MimeTypeMap.getSingleton().getMimeTypeFromExtension("jpg"));
        sap.setShareIntent(shareIntent);


        mShareItem = menu.add("Share");
        mShareItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        mShareItem.setActionProvider(sap);

        MenuItem toggleItem = menu.add("Toggle");
        toggleItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        //---shouldn't this work ? -----
        mShareItem.setEnabled(!mShareItem.isEnabled());

        Toast.makeText(this,mShareItem + " enabled: " + mShareItem.isEnabled(),Toast.LENGTH_SHORT).show();

        return super.onOptionsItemSelected(item);
    }

}
4

2 回答 2

1

这是一个可能的错误,在此处报告

当前解决方法:setShareIntent(null)

于 2012-11-09T07:23:57.960 回答
1

您可以尝试以下方法:

setShareIntent(new Intent());

这应该可以解决问题。

于 2014-08-20T19:38:40.327 回答