У меня небольшая проблема с кодированием.
Моя цель: у меня есть 2 фрагмента [0] и [1].Мой фрагмент по умолчанию - [0].На [1] я нажимаю клавишу возврата и возвращаюсь к фрагменту [0] (вместо закрытия приложения).
Вот код, который работает правильно,
, зная, чтофрагмент [1] уже находится в стеке:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FragmentUn().addToBackStack(null).commit();
, а вот код на backPressed:
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (getFragmentManager().getBackStackEntryCount() > 0){
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
Этот код работает очень хорошо, но я хочу сделать этодобавить действие (popUp) один раз для получения фрагмента [0], который спрашивает пользователя, хочет ли он покинуть приложение или нет, когда кто-то нажимает клавишу возврата (здесь приложение просто закрывается)
Для этого, Я написал:
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (getFragmentManager().getBackStackEntryCount() > 0){
getFragmentManager().popBackStack();
} else {
AlertDialog.Builder exitPopUp = new AlertDialog.Builder(this);
exitPopUp.setTitle("Exit");
exitPopUp.setMessage("Voulez-vous quitter L'App ?");
exitPopUp.setPositiveButton("Oui", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
exitPopUp.setNegativeButton("Non", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
exitPopUp.setNeutralButton("Noter", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Uri uri = Uri.parse("market://details?id=" + getApplicationContext().getPackageName());
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
// To count with Play market backstack, After pressing back button,
// to taken back to our application, we need to add following flags to intent.
goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
try {
startActivity(goToMarket);
} catch (ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/apps/details?id=" + getApplicationContext().getPackageName())));
}
}
});
exitPopUp.show();
}
}
Result ==> Приложение сразу отображает всплывающее окно, когда вы нажимаете return для любого фрагмента [0] или [1].За исключением того, что я хочу, чтобы только прибыть на фрагмент [0], что отображается всплывающее окно.[1] - клавиша возврата -> [0] - клавиша возврата -> всплывающее окно выхода.
Итак, что я должен сделать, чтобы он работал правильно?Заранее спасибо:)