Android(安卓)实时动态刷新更改菜单
16lz
2022-04-22
点击Button,做如上切换。代码如下:
public class MainActivity extends ActionBarActivity {ActionBar actionBar;boolean b = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);actionBar = getSupportActionBar();actionBar.setHomeButtonEnabled(true);actionBar.setDisplayHomeAsUpEnabled(true);findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubif (b) {setTitle("编辑报表");} else {setTitle("报表详情");}b = !b;//通知系统更新菜单supportInvalidateOptionsMenu();}});}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {System.out.println("onPrepareOptionsMenu");menu.clear();if (b) {getMenuInflater().inflate(R.menu.main, menu);} else {getMenuInflater().inflate(R.menu.main2, menu);}return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {System.out.println("onCreateOptionsMenu");getMenuInflater().inflate(R.menu.main, menu);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.action_settings:break;default:break;}return super.onOptionsItemSelected(item);}}
在Button 中调用supportInvalidateOptionsMenu()方法,通知系统刷新菜单,系统会回调onPrepareOptionsMenu 方法,在这里面根据自己的逻辑,进行菜单的处理。
Activity自有 invalidateOptionsMenu 方法,但是它又api的要求,
Call requires API level 11 (current min is 8): android.app.Activity#invalidateOptionsMenu
对于这个效果,我前面是把menu对象给引用为外部变量来操作实现的,今天偶然发现这个方法。
在此,只能感慨 android support包的强大,很多效果都能实现,只是自己的api掌握不够全面。
更多相关文章
- android TextView setEms 方法名字
- 为什么 Dialog 不能用 Application 的 Context
- Android(安卓)常用画图方法练习
- android具有折叠效果的控件
- Android按下back键非退出隐藏到后台
- Android二级联动菜单的实现
- Android级联菜单的实现方法
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用