(4.1.1.2)メニュー作成関数:onPrepareOptionsMenuとonCreateOptionsMenuの違い

2105 ワード

[java]  view plain copy
@Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // TODO Auto-generated method stub  
        menu.add(0,1,1,「現在位置」)  
        menu.add(0,2,2,「地図切替」);  
        if(IsStart == STOPING)  
            menu.add(0,3,3,「記録開始」);   
        else  
            menu.add(0,3,3,「記録停止」);   
        menu.add(0,4,4,「クリアパス」);  
        return super.onCreateOptionsMenu(menu);  
    }  
      
    @Override  
    public boolean onPrepareOptionsMenu(Menu menu) {  
        // TODO Auto-generated method stub  
        super.onPrepareOptionsMenu(menu);  
        menu.clear();  
        menu.add(0,1,1,「現在位置」)  
        menu.add(0,2,2,「地図切替」);  
        if(IsStart == STOPING)  
            menu.add(0,3,3,「記録開始」);   
        else  
            menu.add(0,3,3,「記録停止」);   
        menu.add(0,4,4,「クリアパス」);  
        return super.onPrepareOptionsMenu(menu);  
    }  
違い:
onCreateOptionsMenu:
一度だけ呼び出され、Menu表示の前に一度だけ呼び出され、その後は呼び出されません.
onPrepareOptionsMenu:
onPrepareOptionsMenuは、display Menuの前に呼び出されるたびに、Menuボタンを1回押すだけで呼び出されます.だからここでmenuを動的に変えることができます.
注意:
onPrepareOptionsMenu(Menumenu)関数では、まず次の呼び出しが必要です.
[java]  view plain copy
super.onPrepareOptionsMenu(menu);  
menu.clear();  
clearがなくて直接addすると、メニューのメニュー項目が「追加」され、menuキーを押し続けるにつれてメニュー項目が増加します.
またandroidシステムのデフォルトのメニュースタイルは最大3行までサポートされており、4項目あれば1行2行...スタイルをカスタマイズするには、xmlファイルを使用してスタイルを定義します.
実際のプロジェクト:
	/*onCreateOptionsMenu:
	      ,    Menu         ,         。
	onPrepareOptionsMenu:
	onPrepareOptionsMenu    display Menu  ,     ,     Menu  ,      。            menu。*/
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		super.onPrepareOptionsMenu(menu);  
	        menu.clear();  
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.util_share, menu);
		return super.onPrepareOptionsMenu(menu);
	}