onCreateOptionsMenu和onPrepareOptionsMenu的差别

onPrepareOptionsMenu在实际menu的设计中经常会用到.......

 

其實要實作android menu很簡單,

這裡會快速的帶過,

主要會講一下onCreateOptionsMenuonPrepareOptionsMenu的差別

首先先在/res/資料夾底下,開立一個資料夾/menu

然後再/res/menu/資料夾底下,建立一個menu_option.xml的檔案

檔案內容如下

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@+id/menuOption1" android:title="option1"></item>
 <item android:id="@+id/menuOption2" android:title="option2"></item>
</menu>





建立完成以後,

就在activity中加入menu的code如下:

public class main extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    
    //當menu option被點選以後的反應
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
     Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
     return super.onMenuItemSelected(featureId, item);
    }
    
    
    //建立option menu,等等會講解和onPrepareOptionsMenu的差別
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.menu_option, menu);
     return super.onCreateOptionsMenu(menu);
    }
    
    
    //一樣是建立option menu,等等會講解和onCreateOptionsMenu的差別
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {     
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.menu_option, menu);
     return super.onPrepareOptionsMenu(menu);
    }
    
}







這樣MENU就會建立完成,

但是 onCreateOptionsMenuonPrepareOptionsMenu的差別在哪呢?

onCreateOptionsMenu
  只會呼叫一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!


onPrepareOptionsMenu
  onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
  只要按一次menu按鍵,就會呼叫一次。
  所以你會發現每次只要按一次menu按鍵,
  menu選單就會多兩個(因為我們預設是兩個)
  你可以利用onPrepareOptionsMenu來做update menu狀態的動作








如果你要把menu現有的option清空,

就是下面那行CODE

menu.clear();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值