将活动中的片段加载到已在后台中的另一个活动

时间:2017-11-13 08:38:17

标签: android android-fragments android-activity android-transitions fragment-backstack

我有一个活动(让我们称之为Home Activity),带有底部导航视图,我将替换所有碎片。在Home Activity中我加载了一个带有搜索图标的片段。该搜索图标会重定向到搜索活动的活动。

当我点击任何搜索结果时,我会转到我的Home Activity并替换上一个片段以显示我最近的搜索结果点击实现。

在这种情况下,复杂性是 - 当我试图替换先前的片段时 - 它对用户可见。因为我有一个过渡动画 - 我可以看到前面的片段正在退出,最新的片段正在进入。

这对用户来说根本不是一个好的体验。如何改进功能,以便用户看不到先前的片段?

2 个答案:

答案 0 :(得分:1)

试试这段代码。根据需要创建动画。

public static void callFragment(Fragment fragment, Context context, String TAG) {
    FragmentManager fragmentManager = ((AppCompatActivity) context).getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    if (fragment.isAdded()) {
        fragmentTransaction.show(fragment);
    } else {
        //   fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.face_out);
        fragmentTransaction.setCustomAnimations(R.anim.fragment_slide_top_enter, R.anim.fragment_slide_top_exit, R.anim.fragment_slide_bottom_enter, R.anim.fragment_slide_bottom_exit);
        fragmentTransaction.replace(R.id.content_frame, fragment);
        fragmentTransaction.addToBackStack(TAG);
    }
    fragmentTransaction.commit();
}

还提供片段布局文件的背景信息。

答案 1 :(得分:0)

碎片默认是透明的。因此,您需要为搜索结果片段提供背景信息。为backgroind设置背景布局背景。