`
getMenuInflater().inflate(R.menu.options, menu);
//搜索视窗,因为showAsAction="ifRoom",所以图三中出现了搜索按钮
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search)
.getActionView();
//分享视窗,因为showAsAction="never",所以只能在溢出菜单中才看见到
ShareActionProvider mShareActionProvider = (ShareActionProvider) menu
.findItem(R.id.menu_share).getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
mShareActionProvider.setShareIntent(shareIntent);
//设置视窗,MyActionProvider就是我们自定义的ActionProvider
MyActionProvider myactionprovider = (MyActionProvider) menu.findItem(
R.id.menu_setting).getActionProvider();
return super.onCreateOptionsMenu(menu);
`
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/menu_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifroom"
android:title="搜索"/>
<item
android:id="@+id/menu_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="never"
android:title="分享"/>
<item
android:id="@+id/menu_setting"
android:actionProviderClass="com.example.tabdemo.MyActionProvider"
android:showAsAction="never"
android:title="设置">
<menu>
<item
android:id="@+id/menu_theme"
android:actionProviderClass="com.example.tabdemo.MyActionProvider"
android:showAsAction="always|withText"
android:title="更换主题"/>
<item
android:id="@+id/menu_system"
android:actionProviderClass="com.example.tabdemo.MyActionProvider"
android:showAsAction="always|withText"
android:title="系统设置"/>
</menu>
</item>
点击下拉菜单总是会出现null指针。经发现是mShareActionProvider。
另外为啥点击后不能触发事件。进入对应自定义的ActionProvider。
配置文件
android:actionProviderClass="com.example.tabdemo.MyActionProvider"
这个不起作用?
难道还要自己在onOptionsItemSelected触发事件?
可以这样解决问题:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
switch (item.getItemId()) {
case R.id.menu_share:
transaction.replace(R.id.container, ShareFragment.newInstance());
transaction.commit();
return true;
case R.id.menu_setting:
transaction.replace(R.id.container, SettingFragment.newInstance());
transaction.commit();
return true;
case R.id.menu_feedback:
FeedbackAgent agent = new FeedbackAgent(this);
agent.startFeedbackActivity();
transaction.commit();
return true;
case R.id.menu_about:
new AlertDialog.Builder(MainActivity.this)
.setTitle("关于")
.setMessage("")
.setPositiveButton("确定", null)
.show();
default:
transaction.commit();
return super.onOptionsItemSelected(item);
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。