簡體   English   中英

如何從活動的片段返回到viewpager中的片段

[英]How to return back to a fragment in viewpager from an Activity's fragment

我在MainActivity有一個帶有2個片段(A和B)的viewpager viewpager的片段中,每個包含項目列表的片段都有一個recyclerView 當我單擊片段viewpager的項目時,它會顯示一個新的Activity帶有一個新的片段(C)。 但是,當我按下工具欄上的“后退”按鈕時,即使單擊片段B的項目,它也始終返回到viewpager片段A的MainActivity

androidManifest.xml ,我在新的Activity中添加了"parentActivity: MainActivity" 如果我沒有設置,后退按鈕將不會響應。 當我按下返回按鈕時,我需要幫助以返回正確的片段。

我感謝所有答案。

很容易。 在加載viewpager和片段的活動中保留一個索引變量。 當您切換到另一個活動時,請通過此活動方法進行操作,並使用viewpager中當前所選頁面/片段的索引更新該變量,方法是:

getCurrentItem

此方法將返回可以存儲的索引,然后有兩個選項供您選擇:如果您知道您的活動將僅從該活動中恢復,則可以在onResume中編寫以下方法:

setCurrentItem

否則,您可以使用startActivityForResult並實現相同的目標。 讓我知道是否有任何疑問。

首先,假設您按下了某些內容以從B片段中打開C片段。 在這里,您需要傳遞一些值以告知C是從B片段打開的。

將數據從片段發送到活動

Intent intent = new Intent(getActivity().getBaseContext(),
                    TargetActivity.class);
            intent.putExtra("B", message);
            getActivity().startActivity(intent);

此處的值“ B”表示片段C會打開片段C的活動。對於片段,您需要將其更改為“ A”或任何您想要的內容。

接收活動中的數據並按“返回”按鈕將其發送回去

    Intent intent = getIntent();
    String message = intent.getStringExtra("message");
    back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SecondActivity.class, FirstActivity.class)
                intent.putString(message)
            }
        });

在FirstActivity中接收數據並設置必要的頁面

Intent intent = getIntent();
String message = intent.getStringExtra("message");
if(message == "B"){
    viewPager.setCurrentItem(1) //1 is index of your second page 
}else {
    viewPager.setCurrentItem(0)
}

嘗試這段代碼,讓我知道是否出現問題

首先,要轉到“ NewActivity”,只需使用意圖啟動活動即可,而不要完成“ MainActivity”

對於返回“ MainActivity”,只需完成“ NewActivity” ...希望可以!

暫無
暫無

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

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