2017-08-16 4 views
0

Wenn ein Fragment im Backstack hinzugefügt wird, funktioniert das Optionsmenü nicht. Der erste Fragmentoptionen-Elementklick ist bearbeitet.onOptionsItemSelected Funktioniert nicht im Fragmentbackstack

-Code für Fragment Backstack

public void setFragment(Fragment fragment, int title_res) { 
    String backStateName = fragment.getClass().getName(); 
    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
    if (editable_mode) { 
     boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0); 
     Log.e("fragmentPopped", fragmentPopped + ""); 
     if (fragmentPopped) { 
      fragmentTransaction.remove(fragment); 
     } 
     fragmentTransaction.add(R.id.view_container, fragment); 
     fragmentTransaction.addToBackStack(backStateName); 
     fragmentTransaction.commit(); 
    } else { 
     boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0); 
     Log.e("fragmentPopped", fragmentPopped + ""); 
     if (!fragmentPopped) { //fragment not in back stack, create it. 
      fragmentTransaction.add(R.id.view_container, fragment); 
      fragmentTransaction.commit(); 
     } 
    } 

    getSupportActionBar().setTitle(title_res); 
} 
+0

Setzen Sie das Optionsmenü innerhalb Ihres Fragments oder Ihrer Basisaktivitätsklasse? – hsm59

+0

in Basisaktivität –

Antwort

1

in Ihrem Fragment onCreate() fügen Sie diese Zeile

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

Update:

Wenn Sie Ihr Menü aus Grundaktivität hinzufügen, dann diesen Code hinzufügen in dein Fragment onResume() und entferne setHasOptionsMenu (true) von onCreate()

@Override 
    public void onResume() { 
     super.onResume(); 
     ActivityCompat.invalidateOptionsMenu(getActivity()); 
    } 
+0

Bereits hinzugefügt..diese Zeile .. –

+0

Ich bearbeitet meine ans. Versuch es bitte –

Verwandte Themen