我在导航抽屉活动中有片段(A,B,C),分别有片段A和B的子片段(A2,A3,B2,B3)。 我需要它们像这样工作:1)A-> B-> C-> B.当我按下“后退”按钮时,我需要返回A。也就是说,片段A是主要的2)A-> A2- > A3当我按下后退按钮时,我需要先返回A2,然后返回A。我尝试使用addToBackStack(),它对第二个示例有所帮助,但对第一个示例没有帮助。所以,帮助我,非常感谢))) (对不起,我的英语听不懂)
答案 0 :(得分:1)
第1步:制作一个这样的界面
public interface HostInterface {
void changeCurrentFragmentTo(int currentFragmentId, Bundle bundle);
}
implement it in your Main Activity.
第2步。在您的片段中
private HostInterface hostInterface;
@Override
public void onAttach(Context context) {
super.onAttach(context);
hostInterface = (HostInterface) context;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getView() != null) {
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
**hostInterface.changeCurrentFragmentTo(yorfragment,null);**
return true;
}
}
return false;
}
});
}
}
第3步。现在您可以拨回Activity
了。按照您的New Fragment
呼叫Requirement
答案 1 :(得分:0)
您可以使用FragmentManager直接寻址要显示或隐藏的片段。
ScrollBar