java - actionbar下拉菜单的问题

 秦schueler 发布于 2022-11-05 21:55
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);  





    
        
        
    

点击下拉菜单总是会出现null指针。经发现是mShareActionProvider。
另外为啥点击后不能触发事件。进入对应自定义的ActionProvider。
配置文件
android:actionProviderClass="com.example.tabdemo.MyActionProvider"
这个不起作用?

难道还要自己在onOptionsItemSelected触发事件?

1 个回答
  • 我直接这样解决这个问题了。

       @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);
               }
            }
    
    2022-11-10 07:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有