簡體   English   中英

在Android活動中自定義后退堆棧

[英]Customizing Back Stack in Android Activities

考慮有一個活動稱為活動S。
然后會有很多活動,例如10個活動,分別命名為A,B,C,...,J。

我該如何實現:
在A–J活動中,當按下“后退”按鈕時,請始終返回活動S。
不論順序或活動如何創建。

例如:
從S出發,依次轉到B,D,G。
在活動G中,按返回按鈕,然后返回到S。

==編輯==
離開所有AJ活動時是否應該使用Activity.finish()方法?

您可以根據所需的確切結果以不同的方式完成此操作。 您可以將以下行添加到這些Activities manifest.xml <activity>標記中

android:noHistory="true"

或在每個參數中覆蓋onBackPressed()時使用Intent標志

@Override
public void onBackPressed()
{
    Intent i = new Intent(CurrentActivity.this, S.class);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);`
    startActivity(i);
    super.onBackPressed();
}

這將從堆棧中清除其他Activities ,並返回到S

如果您想在返回S時將Activities保留在堆棧上,則可以更改使用的標志

 @Override
public void onBackPressed()
{
    Intent i = new Intent(CurrentActivity.this, S.class);
    i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);`
    startActivity(i);
    super.onBackPressed();
}

最后一種方法將把S放在最前面,並將其他Activities保留在堆棧中,我認為這不是您想要的,而只是另一種選擇。 您可能會想要前兩種方式之一。

您必須這樣做,設置一個標志,該標志將清除堆棧中的每個活動並將意圖傳遞給S.class,如下所示

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent intent=new Intent(this,S.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM