繁体   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