[英]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.