2015-02-25 6 views
0

Я работаю над приложением android, и я хочу выйти из приложения на заднем пульте, когда дело доходит до состояния, где нет представления для возврата. До этого он должен перейти к предыдущему виду на заднем прессе. Как я могу это сделать.android вернуться к предыдущему виду

Что мне нужно

  • Вернуться к предыдущему виду на задней прессе.
  • Если вы не можете вернуться назад, покажите тост и попросите выйти из приложения.

мой код

@Override 
    public void onBackPressed() { 



      DialogInterface.OnClickListener dialogInterface = new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which) { 
        case DialogInterface.BUTTON_POSITIVE: 


         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         finish(); 

         break; 

        case DialogInterface.BUTTON_NEGATIVE: 


        } 

        commonVariable.setSteps(0); 

       } 
      }; 

      AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.this); 
      builder.setMessage("Are you sure to exit the app?") 
        .setPositiveButton("Yes", dialogInterface) 
        .setNegativeButton("No", dialogInterface).show(); 



     } 
    } 

ответ

0

РЕШЕНИЕ

@Override 
    public void onBackPressed() { 
     if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
      getSupportFragmentManager().popBackStack(); 
     } else { 
      DialogInterface.OnClickListener dialogInterface = new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which) { 
        case DialogInterface.BUTTON_POSITIVE: 


         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         finish(); 

         break; 

        case DialogInterface.BUTTON_NEGATIVE: 


        } 

        commonVariable.setSteps(0); 

       } 
      }; 

      AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.this); 
      builder.setMessage("Are you sure to exit the app?") 
        .setPositiveButton("Yes", dialogInterface) 
        .setNegativeButton("No", dialogInterface).show(); 
     } 
    } 
0

Вы можете использовать Fragment Manager для этого.

В Fragmant менеджере у вас есть метод под названием:

getBackStackEntryCount() 

Если это возвращает 0, вы можете закрыть приложение или же вы просто вернуться.

0

В вашей деятельности:

@Override 
public void onBackPressed() { 
    Fragment fragment = getCurrentFragment(); 
    boolean isHandled = false; 
    if(fragment != null && (fragment instanceof BaseFragment)){ 
     isHandled = ((BaseFragment) fragment).onBackPressed(); 
    } 
    if(!isHandled){ 
     super.onBackPressed(); 
    } 
} 

private Fragment getCurrentFragment() { 
    Fragment fragment = null; 
    FragmentManager fragmentManager = getFragmentManager(); 
    if(fragmentManager != null){ 
     fragment = fragmentManager.findFragmentById(R.id.content_frame); 
    } 
    return fragment; 
} 

В BaseFragment:

public boolean onBackPressed() 
    FragmentManager manager = getFragmentManager(); 
    if(manager != null){ 
     int count = manager.getBackStackEntryCount(); 
     if(count > 0) { 
      manager.popBackStack(); 
     } else { 
      if(isAdded()){ 
       Toast.makeText(getActivity(), "Are you sure?", Toast.LENGTH_SHORT).show(); 
       showDialog(); 
      } 
     } 
    } 
    return true; 
} 
... 
onPositiveButtonClick(){ 
    getActivity().finish(); 
} 
+0

Я использовал «addToBackStack (« назад »)» в каждом используемом множителе фрагмента. Поэтому я могу вернуться к предыдущим представлениям. Но проблема в том, что больше некуда идти, приложение просто уходит без сообщения. Как я могу дать тост, когда больше нет возврата – CraZyDroiD

+0

Но что не так с этим int count = manager.getBackStackEntryCount(); if (count> 0) { manager.popBackStack(); } else { if (isAdded()) { Toast.makeText (getActivity(), «Вы уверены?», Toast.LENGTH_SHORT) .show(); showDialog(); } } показать диалоговое окно и при нажатии OK просто закончить активность, и это все –

1

Try это,

@Override 
public void onBackPressed(){ 

    if(fragment.getBackStackEntryCount() != 0){ 
     DialogInterface.OnClickListener dialogInterface = new DialogInterface.OnClick.... 
     .... 
    } 
    else{ 
     new AlertDialog.Builder(this) 
     .setMessage("Are you sure you want to exit?") 
     .setCancelable(false) 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       YourActivity.this.finish(); 
      } 
     }) 
     .setNegativeButton("No", null) 
     .show(); 
    } 
} 
Смежные вопросы