Android Fragments 从一个Activity导航回另一个Activity的片段

ac1kyiln  于 9个月前  发布在  Android
关注(0)|答案(2)|浏览(98)

我有一个Activity(Activity 1),其中包含多个片段。我从第一个Activity的一个片段(比如片段C)调用第二个Activity(Activity 2)。我想从第二个活动(活动2)导航回片段C。但是,它正在导航到Activity 1的第一个片段,而不是片段C。请帮帮我
到目前为止,我尝试过的代码块:
在片段C中,

categoryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent i=new Intent(getActivity(),Activity2.class);
            getActivity().startActivity(i);
        }
        });

在容器Activity(即Activity 1)中,

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        FragmentC myFragment = new FragmentC();

        transaction.replace(R.id.frame_container, myFragment);
        
        transaction.commit();
neskvpey

neskvpey1#

根据Official Android Documentation,让片段与另一个甚至另一个Activity通信的最佳方式是通过关联的Activity。
为了避免任何混乱的片段交易,请参考:
通常,您会希望一个Fragment与另一个Fragment进行通信,例如根据用户事件更改内容。所有片段到片段的通信都通过关联的Activity完成。两个碎片不应该直接交流。

7ajki6be

7ajki6be2#

你可以使用FragmentManager来控制片段的导航,并将控制从片段移回前一个Activity(将片段弹出回栈)。
在你的例子中,你可以在片段管理器中使用popBackStackImmediate()和popBackStack()来销毁片段。

val fragmentManager = requireActivity().supportFragmentManager
val isPopped = fragmentManager.popBackStackImmediate()

val fragmentManager = requireActivity().supportFragmentManager
fragmentManager.popBackStack()

您还可以阅读this以了解有关这些方法的更多详细信息

相关问题