Đoạn của tôi thay thế tùy chọn Hoạt động gốc bằng một mục tùy chọn cụ thể nhưng khi tôi nhấp vào mục, chỉ onOptionItemSelected
của hoạt động được gọi là eventhough tôi đã ghi đè phương thức bên trong Phân đoạn. Tui bỏ lỡ điều gì vậy?Fragment's onOptionsItemSelected không được gọi là
phương pháp Fragment của:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "Fragment.onCreateOptionsMenu");
if (mPasteMode) {
menu.clear();
inflater.inflate(R.menu.contexual_paste, menu);
getActivity().getActionBar().setTitle("PasteMode");
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "Fragment.onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.context_action_paste:
Toast.makeText(getActivity(),
"It worked ",
Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Hoạt động của phương pháp: đầu ra
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "MainActivitiy.onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.action_refresh:
Toast.makeText(this, "Action Refresh selected", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
Logcat:
MainActivity.onCreateOptionsMenu
Fragment.onCreateOptionsMenu
MainActivitiy.onOptionsItemSelected
Vậy làm thế nào tôi có thể có onOptionsItemSelected
của đoạn được gọi là?
Cảm ơn, đã giải quyết được vấn đề. – Nima
Cần lưu ý rằng setHasOptionsMenu (đúng) phải được gọi trong đoạn là –
cổ vũ @TashPemhiwa – Patric