首页 > 开发 > JAVA > 正文

actionbar下拉菜单的问题

2017-09-07 09:23:21  来源:网友分享
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);           }        }