如何从活动的片段返回到viewpager中的片段

时间:2019-02-20 04:16:49

标签: java android

我有一个viewpager,其中MainActivity中有2个片段(A和B)。在viewpager中的片段中,每个包含项目列表的片段都有一个recyclerView。当我单击片段viewpager的项目时,它会显示一个新的Activity,上面有一个新的片段(C)。但是,当我按下工具栏上的“后退”按钮时,即使我单击片段B的项目,它也始终返回到片段MainActivity的{​​{1}}。

viewpager中,我向新活动添加了androidManifest.xml。如果我没有设置,后退按钮将不会响应。 当我按下返回按钮时,我需要帮助以返回正确的片段。

我很感谢所有答案。

3 个答案:

答案 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” ...希望可以!