1

我知道這個問題已經被問到,但是沒有一個建議的解決方案適用於我。Android:onOptionsItemSelected不會從片段調用

我想從片段調用此方法:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) { 
     View view = inflater.inflate(R.layout.my_clock_layout, container, false); 
     listView = (ListView) view.findViewById(R.id.clock_list); 
     listView.setAdapter(new ClockAdapter(this.getActivity())); 



     return view; 
    } 


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


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()) { 
     case R.id.add_alarm: 
      Fragment newContent = new AddAlarmFragment(); 
      if (getActivity() instanceof MenuMainActivity) { 
       MenuMainActivity mma = (MenuMainActivity) getActivity(); 
       mma.switchContent(newContent); 
      } 
     } 
     return super.onOptionsItemSelected(item); 
    } 

} 

然後在MenuMainActivity調用此方法:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case android.R.id.home: 
     toggle(); 
     return true; 
    case R.id.add_alarm: 
     return false; 
    } 
    return super.onOptionsItemSelected(item); 
} 

這不幸的是,沒有工作和碎片方法沒有按不會打電話。

問題是什麼?

在此先感謝!

+0

可以肯定的是,你是否用**菜單的xml文件**在'onCreateOptionsMenu(...)'中誇大了菜單? – vilpe89

+0

@ vilpe89是啊,在我的BaseActivity我有這樣的方法: \t公共布爾onCreateOptionsMenu(菜單菜單){ \t \t getSupportMenuInflater()膨脹(R.menu.main,菜單); \t \t return super.onCreateOptionsMenu(menu); \t} – lulu

+0

當Fragment的方法沒有被調用? – vilpe89

回答

1

所以我發現我的錯誤。我的Activity擴展了SherlockFragmentActivity,但該片段擴展了正常的Fragment而不是SherlockFragment。隨着Fragment延伸SherlockFragment它現在的作品。 感謝您的幫助!

3

在您的片段onCreate確保你打電話setHasOptionsMenu(true);

編輯請確保您的public boolean onOptionsItemSelected(MenuItem item)實際上是public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item)。或者更新import這個MenuItem

+0

我已經在片段中的onCreateView中調用了它。你的意思是我應該在那裏做,或者在MenuMainActivity? – lulu

+0

我總是用片段'onCreate'調用它。不要在活動 – gunar

+0

中調用此函數我編輯了我的答案併發布了更多代碼以使其更清晰。我也在調用onCreate方法。提前致謝! – lulu

相關問題