我知道這個問題已經被問到,但是沒有一個建議的解決方案適用於我。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);
}
這不幸的是,沒有工作和碎片方法沒有按不會打電話。
問題是什麼?
在此先感謝!
可以肯定的是,你是否用**菜單的xml文件**在'onCreateOptionsMenu(...)'中誇大了菜單? – vilpe89
@ vilpe89是啊,在我的BaseActivity我有這樣的方法: \t公共布爾onCreateOptionsMenu(菜單菜單){ \t \t getSupportMenuInflater()膨脹(R.menu.main,菜單); \t \t return super.onCreateOptionsMenu(menu); \t} – lulu
當Fragment的方法沒有被調用? – vilpe89