2012-04-24 64 views
34

我使用創建應用程序選項菜單。我發現它的幾個例子,但每個人都在使用不同的地方super.onCreateOptionMenu()onCreateOptionsMenu()方法。onCreateOptionsMenu()調用超級

不同的方式列表:

@Override // without super 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

我應該用什麼?

回答

29

這取決於你想要做什麼。第一個例子將放置你的菜單和只有你的菜單。第二個,將添加第一個超類菜單。最後一個會先添加你的菜單。但是,請記住,菜單中還有一個訂單字段,在提交時會考慮到這一點。

假設您正在擴展已有菜單的活動,但您不希望該菜單顯示爲另一個菜單。在這種情況下,你會使用第一種方法。

另一個例子:你正在擴展一個有菜單的活動,並且你想添加另一個菜單。在這種情況下,您可以使用第二種或最後一種方法。

3

源爲onCreateOptionsMenu()如下:

public boolean onCreateOptionsMenu(Menu menu) { 
    if (mParent != null) { 
     return mParent.onCreateOptionsMenu(menu); 
    } 
    return true; 
} 

mParent是當前活動的父活動。如果您的活動延伸android.app.Activity,那麼最後可以返回true,而不用擔心調用super,因爲默認實現將嘗試顯示基於父活動的菜單,而這可能不是您想要的。