Ich habe eine Implementierung von Fragment wie here erläutert. Ich habe die BaseFragment-Klasse erweitert, um das Navigationssymbol onClickListener zu behandeln. Der Code für das wie folgt aussieht,Fragment bei Aktivität nicht an Aktivität angefügt
private void onBackButtonPressed(int tag)
{
switch (tag)
{
case Global.DISPLAY_STORE:
{
setTitle("Loyalty Cards",Color.BLACK);
setToolBar(getResources().getColor(R.color.white), Global.ADD_CARD,R.drawable.add_round_btn);
break;
}
case Global.ADD_CARD:
{
setTitle("Wallet", Color.WHITE);
setToolBar(getResources().getColor(R.color.colorPrimary), Global.DISPLAY_STORE,R.drawable.icon_shopping);
getFragmentManager().popBackStack();
break;
}
case Global.CARD_DETAILS:
{
setTitle("Loyalty Cards",Color.BLACK);
setToolBar(getResources().getColor(R.color.white), Global.ADD_CARD,R.drawable.add_round_btn);
getFragmentManager().popBackStack();
break;
}
}
}
ich diesen Codeblock bin mit der Symbolleiste und Farben zu ändern, wenn wieder Taste pressed.This Code befindet sich in BaseFragment ist.
Hier ist, wie ich den Code implementieren Presse zu behandeln zurück,
Ich habe meine Fragment, das das BaseFragment erstreckt
public class CardDetailsFragment extends BaseFragment
Jetzt in der BaseFragment onCreate ich diesen Code haben,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivity = (MainActivity) getActivity();
ImageButton righBarButton = (ImageButton) mainActivity.getToolbar().findViewById(R.id.btn_ToolBarRightBtn);
righBarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRighBarButtonClicked(Integer.parseInt(v.getTag().toString()));
}
});
mainActivity.getToolbar().setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackButtonPressed(BACK_BUTTON_TAG);
}
});
getFragmentManager().addOnBackStackChangedListener(this);
shouldDisplayHomeUp();
}
Dadurch wird jede Fragmentierung zurück Knopfdruck und die rechte Leiste Knopf klicken in der Symbolleiste behandelt.
das Szenario vor Ich habe drei Fragmente A, B und C.
Von Fragmente AI offen Fragment B und dann Fragment C. Jetzt ab Fragment CI klicken Sie auf die Schaltfläche Zurück Fragment B. Das Zurück-Taste Ereignis zu erreichen ist von oben genannten Code behandelt und es funktioniert gut.
Jetzt von Fragment B, ich auf die Zurück-Taste Fragment A zu erreichen Aber wenn ich klicken zurück erhalte ich Ausnahme
java.lang.IllegalStateException: Fragment CardDetailsFragment{d8b35b5} not attached to Activity
at android.support.v4.app.Fragment.getResources(Fragment.java:636)
hier ist die CardDetailsFragment die FragmentC, aber ich Sie auf den Button zurück-Taste von Fragmente B
Wie wird das Fragment, das das Ereignis immer 'onBackButtonPressed()' anrufen? –
Ich habe die PST – Zach
aktualisiert Versuchen Sie, Instanz des Fragments im Back-Stack zu speichern und laden Sie es auf der Rückseite drücken –