我想禁用在ActionBar的Action Mode中显示的ShareActionProvider
。但是
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);
}
}
MenuItem
的启用状态已设置为 false,但我仍然可以单击它,目前我正在将其ShareIntent
设置为 null 作为解决方法。这种情况发生在ActionMode
中。 - S.D.item
是否启用来切换mShareItem
,而不是基于mShareItem
本身是否启用)。话虽如此,即使修复了这个问题,我还是能够重现你的问题。目前,我认为这是一个 bug,并且我已经提交了报告:http://code.google.com/p/android/issues/detail?id=39290 - CommonsWare