簡體   English   中英

啟動相同的活動,然后繼續。 如何保留意圖參數?

[英]Launch the same activity and then go up. How to preserve intent params?

我正在使用不同的EXTRA參數從ArticleAtivity啟動相同的ArticleActivity

Intent intent = new Intent(view.getContext(), ArticleActivity.class);
intent.putExtra(ArticleActivity.INTENT_EXTRA_ARTICLE_ID, articleId);
view.getContext().startActivity(intent);

文章可以包含子文章。 我從意圖中使用artileId來獲取其內容和子文章。 所以我可以這樣深入:
A > A > A > A

然后我需要上去。 像這樣:
A > A > A > A < upBtn < upBtn < upBtn
嘗試使用standrad工具欄上按鈕。 但這使我回到第一個屏幕。 我不需要launchMode="singleTop"因為我希望用戶能夠逐級返回,並且至少要使每個級別的文章ID保持適度。

我試圖對savedInstanceState做一些savedInstanceState ,但是當我按下按鈕時, savedInstancedStateonCreate始終為null,並且從scrath重新創建了活動。

因此,當我以某種方式按下向上按鈕時,我需要傳遞articleId 我該怎么做? 謝謝。

最好的方法是在該activity 調用一個方法 並更新詳細信息 更新后,將articleId保存到ArrayList然后處理onBackPressed()彈出最后一個articleId直到返回為止。

private ArrayList<Integer> articleIds = new ArrayList<>(); //initialize on top

然后,不必再次調用該activity ,而是調用方法來刷新新的詳細信息,然后保存新的articleId

initDetails(int articleId) {
   articleIds.add(articleId);

   //load the new detail with the new article Id...
}

onBackPressed() ,這是您將回到過去使用的articleIds的邏輯:

@Override
public void onBackPressed() {
    if (!articleIds.isEmpty()) { //check if there's still articleId left to load
        initDetails(articleIds.get(articleIds.size() - 1)); //call the init details again with the previous articleId

        articleIds.remove(articleIds.size() - 1); //remove the last ID
    } else {  //call here if this is the last articleId
        super.onBackPressed();
    }
}

如果有我錯過的事情要解釋,或者有什么令人困惑的地方,請不要猶豫告訴我。

暫無
暫無

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

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