Mein Fragment ersetzt die übergeordneten Aktivitätsoptionen durch ein bestimmtes Optionselement, aber wenn ich auf das Element klicke, wird nur die Aktivität onOptionItemSelected
aufgerufen, obwohl ich die Methode in Fragment überschrieben habe. Fehle ich etwas?Fragments onOptionsArtSelected wird nicht aufgerufen
Fragment Methoden:
@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);
}
}
Aktivität Methoden:
@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 Ausgang:
MainActivity.onCreateOptionsMenu
Fragment.onCreateOptionsMenu
MainActivitiy.onOptionsItemSelected
Also wie kann ich die onOptionsItemSelected
des Fragments genannt haben?
Danke, das hat das Problem gelöst. – Nima
Es sollte beachtet werden, dass setHasOptionsMenu (true) im Fragment aufgerufen werden muss ist –
Prost @ TashPemhiwa – Patric