2013-03-27 76 views
1
@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    Log.d("Does", "get called"); 
    inflater.inflate(R.menu.menuitem, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

下面是我的onCreateView方法,其中我打電話菜單沒有得到所謂的

@Override 
public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 
      setHasOptionsMenu(true); 
      return inflater.inflate(R.layout.layout1, container, false); 
} 

我不明白的日誌報表或菜單獲取調用我的行動吧。

更新:我試着從片段的onCreate方法調用這個,但菜單沒有顯示。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true);   
} 

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/section" android:title="@string/section" 
     android:icon="@drawable/ic_section" 
     android:showAsAction="always" /> 

    <item android:id="@+id/refresh" android:title="@string/refresh" 
     android:icon="@drawable/ic_refresh" 
     android:showAsAction="always" /> 

    <item android:id="@+id/edit_patient" android:title="@string/edit_patient" 
     android:icon="@drawable/ic_editpatient" 
     android:showAsAction="always" />  

    <item android:id="@+id/about" android:title="@string/about" 
     android:showAsAction="never" /> 

    <item android:id="@+id/help" android:title="@string/help" 
     android:showAsAction="never" /> 

    <item android:id="@+id/signout" android:title="@string/signout" 
     android:showAsAction="never" /> 

</menu> 
+0

您使用的Android版本我指的是API級.. – 2013-03-27 08:53:34

+0

@Abhijit <使用-SDK 安卓的minSdkVersion = 「14」 機器人:targetSdkVersion = 「15」/> – Kevin 2013-03-27 09:04:19

+0

也與大家分享您R.menu .menuitem xml文件。 – keyboardsurfer 2013-03-27 09:30:07

回答

5

你需要從的片段起始生命週期方法之一內作出的setHasOptionsMenu(true);打電話。最好從onCreate(...)以內。

在簡約的情況下,您的片段onCreate方法是這樣的:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

此外,調用super.onCreateOptionsMenu(menu, inflater);你誇大你的自定義菜單將重置您剛纔已經膨脹到一個空的菜單後,在菜單。

於是透過電話:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    Log.d("Does", "get called"); 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.menuitem, menu); 
} 

或:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    Log.d("Does", "get called"); 
    //no super call 
    inflater.inflate(R.menu.menuitem, menu); 
} 

另外,如果你是一個薑餅設備上進行測試,可能不會,如果託管Activity不包含顯示的菜單它自己的菜單項。

+1

當我嘗試從我的活動onCreate()方法中調用setHasOptionsMenu(true)時,出現此錯誤。 「方法setHasOptionsMenu(boolean)對於BaseActivity類型是未定義的」 – Kevin 2013-03-27 09:10:31

+0

如上所述,您需要從Fragment中調用此方法。 – keyboardsurfer 2013-03-27 09:16:20

+0

我還沒有得到菜單,我已更新我的帖子。 – Kevin 2013-03-27 09:27:56

相關問題