2015-05-06 25 views
0

我是一個Android應用程序,我會在我的操作欄圖標,爲什麼我用一個main.xml文件安卓:我的整個活動同樣的菜單

我呼籲我的所有視圖此菜單顯示,但我會像一些頁面上的菜單項沒有出現,該怎麼做?

我的視圖擴展了BaseMenuActivity,BaseMenuActivity擴展了Activity。 我是否在整個視圖中報告「onOptionsItemSelected」和「onCreateOptionsMenu」?

main.xml中

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" > 

<item android:id="@+id/action_settings" 
    android:title="@string/action_settings" 
    android:orderInCategory="100" 
    app:showAsAction="never" /> 

<item android:id="@+id/action_shopping_client" 
    android:title="client" 
    android:showAsAction="ifRoom|withText"/> 

<item android:id="@+id/action_shopping_cart_buy" 
    android:icon="@drawable/shopping_cart_buy" 
    android:showAsAction="always" 
    android:title="buy" /> 

<item android:id="@+id/action_shopping_cart" 
    android:icon="@drawable/shopping_cart" 
    android:showAsAction="withText|ifRoom" /> 

在我的活動:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem item= menu.findItem(R.id.action_settings); 
    item.setEnabled(false); 
    item.setVisible(false); 
    MenuItem item2= menu.findItem(R.id.action_shopping_cart_buy); 
    item2.setVisible(false); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     Intent i = new Intent(this, SettingActivity.class); 
     startActivity(i); 
    } 
    if(id == R.id.action_shopping_cart_buy){ 
    } 
    return super.onOptionsItemSelected(item); 
} 

回答

0

裏面你BaseMenuActivity採取使子類中,設置一個布爾值。

和onCreateOptionsMenu(菜單菜單)僅根據該布爾值對菜單進行充氣。

+0

確定,但我有這個菜單上應在啓動功能的項類,該項目顯示在該視圖上(僅在一個視圖上),因此如何在BaseMenuActivity的子類中調用該函數? – ced

0

您可以在每個子類中重寫此函數public boolean onCreateOptionsMenu(Menu menu){} 以及哪個Item想要在類中顯示。
例如: MenuItem item = menu.findItem(R.id.action_settings); item.setEnabled(true);

但首先你聲明這個item.setEnabled(false);在你的父類

+0

好的,但我有這個菜單上的項目,應該在類中啓動一個函數,該項目顯示在此視圖(僅在一個視圖),因此如何調用BaseMenuActivity的子類中的函數? – ced

0

可以隱藏菜單通過這樣

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 

} 

替換布爾假的,而不是真正的

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.main, menu); 
    return false; 

}