Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段后退按钮导航_Android_Android Fragments - Fatal编程技术网

Android 片段后退按钮导航

Android 片段后退按钮导航,android,android-fragments,Android,Android Fragments,假设我有3个片段:A,B,C 我从A->B开始 B->C C->B不按后退按钮 B->C不按后退按钮 C->B不按后退按钮 B->C不按后退按钮 现在按下后退按钮,导航应该是C->B->A->finish 换言之,无论导航次数多少,无需按下后退按钮之间 B->C和C->B,按后退按钮向后导航的顺序应该是C->B->A假设所有允许的转换都是ABC,您可以在导航C->B时使用FragmentManager.popBackStack方法,并且在导航B->C时始终将转换添加到后堆栈 以下是如何进行转换:

假设我有3个片段:A,B,C

我从A->B开始 B->C C->B不按后退按钮 B->C不按后退按钮 C->B不按后退按钮 B->C不按后退按钮 现在按下后退按钮,导航应该是C->B->A->finish

换言之,无论导航次数多少,无需按下后退按钮之间
B->C和C->B,按后退按钮向后导航的顺序应该是C->B->A

假设所有允许的转换都是ABC,您可以在导航C->B时使用FragmentManager.popBackStack方法,并且在导航B->C时始终将转换添加到后堆栈

以下是如何进行转换:

public void transitionFromAToB() {
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment_container, new FragmentB())
            .addToBackStack(null)
            .commit();
}

public void transitionFromBToC() {
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment_container, new FragmentC())
            .addToBackStack(null)
            .commit();

}

public void tansitionFromCToB() {
    getSupportFragmentManager().popBackStack();
}

public void transitionFromBToA() {
    getSupportFragmentManager().popBackStack();
}

因此,在转换C->B时,实际上并不是在进行新的转换,而是在反转B->C转换。

已经尝试过这一点,但没有达到预期效果。你能分享一个示例代码吗?用示例修改了答案如何进行转换。