我有一个viewpager
,其中MainActivity
中有2个片段(A和B)。在viewpager
中的片段中,每个包含项目列表的片段都有一个recyclerView
。当我单击片段viewpager
的项目时,它会显示一个新的Activity
,上面有一个新的片段(C)。但是,当我按下工具栏上的“后退”按钮时,即使我单击片段B的项目,它也始终返回到片段MainActivity
的{{1}}。
在viewpager
中,我向新活动添加了androidManifest.xml
。如果我没有设置,后退按钮将不会响应。
当我按下返回按钮时,我需要帮助以返回正确的片段。
我很感谢所有答案。
答案 0 :(得分:0)
非常容易。在加载viewpager和片段的活动中保留一个索引变量。切换到另一个活动时,请通过此活动方法进行操作,并使用
在viewpager中使用当前选定页面/片段的索引更新该变量。getCurrentItem
此方法将返回可以存储的索引,然后有两个选项供您选择:如果您知道您的活动将仅从该活动中恢复,则可以在onResume中编写以下方法:
setCurrentItem
否则,您可以使用startActivityForResult并实现相同的目标。让我知道是否有任何疑问。
答案 1 :(得分:0)
首先,让我们假设您按下了某些内容以从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)
}
尝试此代码,让我知道是否出了问题
答案 2 :(得分:0)
首先,要转到“ NewActivity”,只需使用意图开始活动,而不完成“ MainActivity” 。
要返回“ MainActivity”,只需完成“ NewActivity” ...希望可以!