2016-08-18 3 views
1

У меня есть 4 действия, позволяющие предполагать активность «A», «B», «C» и «D», когда я перехожу из C> D> A, и когда я нажимаю кнопку «Назад» из «А», затем «C», стал видимым для меня, а не существовал из приложения. Как я могу это понять.Как удалить активность из back stack в android?

ответ

0

В активности А вы можете закончить все действия в onResume для этого вам нужно хранить всю деятельность в этом в staic переменной

активность B

public static B b; 
oncreate(){ 
//... 
b=this; 
} 

Сделайте то же самое для C и D и в A

onResume(){ 
    clearAllTasks(); 
} 

public void clearAllTasks(){ 
if(B.b!=null){ 
    B.b.finish(); 
} 
if(C.c!=null){ 
    C.c.finish(); 
} 
if(D.d!=null){ 
    D.d.finish(); 
} 
} 

in manifest

<application> 
    <activity android:name="A" 
    android:noHistory="true"> 
    </activity> 
    //... 
</application> 
0

переопределять backpress как это, откуда вы хотите, чтобы вернуться на главный экран

@Override 
    public void onBackPressed() { 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setCancelable(true); 
     builder.setTitle("Exit"); 
     builder.setMessage("Do you want to exit?"); 
     builder.setInverseBackgroundForced(true); 
     builder.setNegativeButton("Yes", 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        /*finish(); 
        System.exit(0);*/ 
        Intent intent = new Intent(Intent.ACTION_MAIN); 
        intent.addCategory(Intent.CATEGORY_HOME); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
       } 
      }); 
     builder.setPositiveButton("No", 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 
     builder.create(); 
     builder.show(); 


    } 
1

Вы можете уничтожить вашу активность при вызове следующей активности. Итак, после Intent вы можете вызвать метод finish(), чтобы уничтожить эту активность.

Проверить это один

Intent intent = new Intent(this, NextActivity.class); 
startActivity(intent); 
finish(); 

При использовании этого он не идет к предыдущей деятельности вместо этого он заканчивает свою деятельность.

ИЛИ
Вы также можете использовать NO_HISTORY пометка

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
0

Я предполагаю, что вы пытаетесь выйти из приложения. Вот ваш ответ: How to exit from the application and show the home screen?

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 
Смежные вопросы