Android 实时动态刷新更改菜单
16lz
2021-01-23
点击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 常用画图方法练习
- android TextView setEms 方法名字
- Android级联菜单的实现方法
- Android二级联动菜单的实现
- Android实现手机震动抖动效果的方法
- android获取设备屏幕大小的方法
- Android操作系统11种传感器介绍
- Android中MediaPlayer的setDataSource方法的使用