从 Fragment 处理 OnBackPress
Handle OnBackPress from Fragment
我有 3 个片段 Fragment1、Fragment2 和 Fragment3,导航就像
Fragment1->Fragment2->Fragment3
但是在完成 Fragment2 之类的任务后,按 From Fragment3 返回 Fragment2。从 Fragment1 完成这个 activity.
完成这项任务的最佳方法是什么。
Fragment
里面不需要处理OnBackPress
。当您执行 Fragment
交易时,您可以将您的片段放入 BackStack
:
When there are FragmentTransaction objects on the back stack and the user presses the Back button, the FragmentManager pops the most recent transaction off the back stack and performs the reverse action (such as removing a fragment if the transaction added it).
您可以从这里获得更多详细信息article。
请按流程操作。
1. 当您添加片段时,将以下代码添加到您的代码中
fragmentTransaction.addToBackStack(null);
然后返回按钮句柄来自activity。
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount()>0){
getFragmentManager().popBackStack();
}else {
super.onBackPressed();
} }
它将完美运行。编码愉快。
根据您的问题,您只需在 commit()
交易之前添加 addToBackStack()
方法。
例如:
FirstFragment firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();
添加第二个和第三个片段与上述方式相同,只需在 onBackPressed()
覆盖方法中添加代码。
例如:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
我有 3 个片段 Fragment1、Fragment2 和 Fragment3,导航就像
Fragment1->Fragment2->Fragment3
但是在完成 Fragment2 之类的任务后,按 From Fragment3 返回 Fragment2。从 Fragment1 完成这个 activity.
完成这项任务的最佳方法是什么。
Fragment
里面不需要处理OnBackPress
。当您执行 Fragment
交易时,您可以将您的片段放入 BackStack
:
When there are FragmentTransaction objects on the back stack and the user presses the Back button, the FragmentManager pops the most recent transaction off the back stack and performs the reverse action (such as removing a fragment if the transaction added it).
您可以从这里获得更多详细信息article。
请按流程操作。 1. 当您添加片段时,将以下代码添加到您的代码中
fragmentTransaction.addToBackStack(null);
然后返回按钮句柄来自activity。
@Override public void onBackPressed() { if (getFragmentManager().getBackStackEntryCount()>0){ getFragmentManager().popBackStack(); }else { super.onBackPressed(); } }
它将完美运行。编码愉快。
根据您的问题,您只需在 commit()
交易之前添加 addToBackStack()
方法。
例如:
FirstFragment firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();
添加第二个和第三个片段与上述方式相同,只需在 onBackPressed()
覆盖方法中添加代码。
例如:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}