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