2015-05-14 22 views
0

Я пытаюсь реализовать onBackPressed в действии с 3 фрагментами. Моя проблема заключается в том, что я выполнил «снова нажать для выхода» после некоторого метода времени, однако, когда кнопка «Назад» дважды нажата, она возвращается к предыдущему фрагменту, а не удаляется. Это происходит, когда этот фрагмент называется (например, если я открываю игру и сразу выхожу, это работает как шарм). Мой метод onBackPressed в MainActivity выглядит следующим образом;onBackPressed с фрагментами Android

@Override 
public void onBackPressed() { 

    if(getSupportFragmentManager().getBackStackEntryCount()!=0) { 
     getSupportFragmentManager().popBackStack(); 
    } 
    this.findViewById(R.id.linearLayout1).setVisibility(View.VISIBLE); 
    if(mBackPressed + TIME_INTERVAL > System.currentTimeMillis() && getSupportFragmentManager().getBackStackEntryCount()==0){ 
     super.onBackPressed(); 
     System.exit(0); 
     this.finish(); 
    } 
    else { Toast.makeText(getBaseContext(), "Press back once more to exit", Toast.LENGTH_SHORT).show(); } 

    mBackPressed = System.currentTimeMillis(); 
} 

Я в принципе хочу, чтобы проверить, если пользователь находится в макете mainActivity, чтобы я мог уйти от использования popBackStack. Любое решение было бы оценено, я мог бы предоставить дополнительную информацию, если этого недостаточно.

Спасибо, Бекташ

ответ

1

Если вы действительно хотите бросить курить, игнорировать стек обратно в целом. Используйте этот код.

@Override 
public void onBackPressed() { 
    this.findViewById(R.id.linearLayout1).setVisibility(View.VISIBLE); 
    if(mBackPressed + TIME_INTERVAL > System.currentTimeMillis()){ 
     this.finish(); 
     return; 
    } 
    else { 
     Toast.makeText(getBaseContext(), "Press back once more to exit", Toast.LENGTH_SHORT).show(); 
    } 
    mBackPressed = System.currentTimeMillis(); 
} 
+0

Таким образом, я не буду иметь любой подавленное действие на мои фрагменты. Я пробовал это, что оставляет меня с неоткрывающимися осколками, которые могут быть болью. –

0

Я думаю, вы могли бы найти эту ссылку полезной http://developer.android.com/training/implementing-navigation/temporal.html

он говорит, что вы можете добавить ссылку на стек с помощью этого paturn

// Works with either the framework FragmentManager or the 
// support package FragmentManager (getSupportFragmentManager). 
getSupportFragmentManager().beginTransaction() 
          .add(detailFragment, "detail") 
         // Add this transaction to the back stack 
         .addToBackStack() 
         .commit(); 
+0

Это похоже на то, как я перехожу от действия к фрагменту, который на самом деле не решает, как оттолкнуть назад нажатие на фрагменты и действия. –

-1
@Override 
public void onBackPressed() { 
    int count = getSupportFragmentManager().getBackStackEntryCount(); 
    if (count == 0) { 
     getSupportFragmentManager().popBackStack(getSupportFragmentManager().getBackStackEntryCount(), getSupportFragmentManager().POP_BACK_STACK_INCLUSIVE); 
     android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context); 
     builder.setCancelable(false); 
     builder.setMessage("Are you sure you want to exit?") 
       .setNegativeButton(android.R.string.no, null) 
       .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 

        public void onClick(DialogInterface arg0, int arg1) { 
         (Main Activity Name).super.onBackPressed(); 
        } 
       }).create().show(); 
    } else { 
     super.onBackPressed(); 


    } 
}