Android 如何从片段A回到片段B?
我需要从FragmentA转到FragmentB(我正在使用navigationdrawer) 我在FragmentB中创建此方法:Android 如何从片段A回到片段B?,android,back,onbackpressed,Android,Back,Onbackpressed,我需要从FragmentA转到FragmentB(我正在使用navigationdrawer) 我在FragmentB中创建此方法: public void onBackPressed(){ FragmentManager fm = getActivity().getFragmentManager(); fm.popBackStackImmediate(); } 但是它们不起作用,我如何实现这个方法呢?这个代码应该在活动中,包含这两个片段 请确保通过调用以下命令将片段添加(而不
public void onBackPressed(){
FragmentManager fm = getActivity().getFragmentManager();
fm.popBackStackImmediate();
}
但是它们不起作用,我如何实现这个方法呢?这个代码应该在
活动中,包含这两个片段
请确保通过调用以下命令将片段添加(而不是替换)到后堆栈:
android.app.FragmentTransaction#add(int, android.app.Fragment, java.lang.String)
android.app.FragmentTransaction#addToBackStack
android.app.FragmentTransaction#commit
或支持库中的等效代码此代码应位于包含这两个片段的活动
中
请确保通过调用以下命令将片段添加(而不是替换)到后堆栈:
android.app.FragmentTransaction#add(int, android.app.Fragment, java.lang.String)
android.app.FragmentTransaction#addToBackStack
android.app.FragmentTransaction#commit
或者它们在支持库中的等价物用于从一个片段转到另一个片段,我正在从片段调用活动的方法,以便活动的方法可以访问保存片段的视图,并且可以轻松切换
就像我片段中的这个
((MainActivity)getActivity())。从Item到Category()的转换
在这样的片段中
public void TransitionFromItemToCategory(){
FoodCategoryFragment FCM = new FoodCategoryFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, FCM);
ft.commit();
}
为了从一个片段转到另一个片段,我从片段调用活动的方法,以便活动的方法可以访问保存片段的视图,并且可以轻松切换
就像我片段中的这个
((MainActivity)getActivity())。从Item到Category()的转换
在这样的片段中
public void TransitionFromItemToCategory(){
FoodCategoryFragment FCM = new FoodCategoryFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, FCM);
ft.commit();
}
当你添加你的碎片时,你还必须将它添加到你的碎片的backbackback中
FragmentTransaction ft = getSupportFragmentManager.beginTransaction();
ft.replace(R.id.content, fragment, backStateName);
ft.addToBackStack(backStateName);
ft.commit();
(这里R.id.content是活动中的片段容器)
然后,您必须在包含片段的活动中重写onBackPressed方法
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
getSupportFragmentManager().popBackStack();
}
}
如果您想自定义onBackPressed,那么您可以在活动中检查当前可见的片段,并创建一个回调来执行该特定片段的操作。
示例-
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.content);
if (fragment instanceof FragmentB) {
((FragmentB) fragment).onBackPressed();
// getSupportFragmentManager().popBackStack();
}
}
现在可以添加getSupportFragmentManager().popBackStack();在片段的onBackPressed()方法中。添加片段时,还必须将其添加到片段的backbackback中
FragmentTransaction ft = getSupportFragmentManager.beginTransaction();
ft.replace(R.id.content, fragment, backStateName);
ft.addToBackStack(backStateName);
ft.commit();
(这里R.id.content是活动中的片段容器)
然后,您必须在包含片段的活动中重写onBackPressed方法
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
getSupportFragmentManager().popBackStack();
}
}
如果您想自定义onBackPressed,那么您可以在活动中检查当前可见的片段,并创建一个回调来执行该特定片段的操作。
示例-
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.content);
if (fragment instanceof FragmentB) {
((FragmentB) fragment).onBackPressed();
// getSupportFragmentManager().popBackStack();
}
}
现在可以添加getSupportFragmentManager().popBackStack();在片段的onBackPressed()方法中。用片段A替换片段B我该怎么做?你能给我举个例子吗?请参考手机左侧底部的@Rotwang i need to do“back”按钮,在你的活动的onBackPressed()
事件中,什么会阻止你这样做?用片段A替换片段B我能做什么?你能给我举个例子吗?请参考手机左侧底部的@Rotwang我需要用“后退”按钮来做什么?在你的活动的onBackPressed()
事件中,是什么阻止你这么做的?哦,我现在把我的onBackPressed()
方法放在我的活动中,但现在当我点击“后退”按钮时他什么也不做你确定后靠背不是空的吗?如果它是空的,你应该调用super.onBackPressed()
。哦,现在我把我的onBackPressed()
方法放在我的活动中,但现在当我单击“后退按钮”时,他什么也不做。你确定backbackback不是空的吗?如果为空,则应调用super.onBackPressed()
。可以将类名设置为String backStateName=FragmentB.class.getName();您可以将类名设置为String backStateName=FragmentB.class.getName();