我是 Android 新手。我无法处理 onBackPressed 方法。我有一个 Activity 类,其中有四个 fragment ,例如 A、B、C、D。当我午餐时,默认情况下 Activity fragment A 处于 Activity 状态,并且 fragment A 上有链接可以移动另一个 fragment 。我希望当从 fragment A 移动另一个 fragment (如 B、C、D)并按下“后退”按钮时,它会返回到 fragment A,如果我从 fragment A 中按下“后退”按钮,它会显示一个对话框。 我使用了 onBackPressed() 如下所示
public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
// set title
alertDialogBuilder.setTitle("Exit");
// set dialog message
AlertDialog.Builder builder = alertDialogBuilder
.setMessage("Do you really want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
MainActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
但它适用于所有 fragment ,我只想仅适用于 fragment A
最佳答案
您必须仅在 Activity 的 onBackPressed 中处理此类要求。我通常遵循以下方法:
我保留一个枚举,其中定义了所有 fragment 以及一个用于跟踪当前 fragment 的参数:
enum FRAGMENTS{
fragmentA, fragmentB, fragmentC, fragmentD
}
FRAGMENTS mCurrentFragment;
现在更改 fragment 的逻辑应该具有:
public void changeFragment(FRAGMENTS newFragment){
//Your logic
mCurrentFragment = newFragment;
}
最后是 onBackPressed 的逻辑:
onBackPressed{
if(mCurrentFragment == FRAGMENTS.fragmentA){
//Your code here of asking the user if he/she really wants to quit
super.onBackPressed();
}else{
changeFragment(getPreviousFragment(mCurrentFragment));
}
}
如果您不想使用枚举,您可以使用 Final int 或任何其他字符串值来表示不同的 fragment ,并使用 mCurrentFragment 参数来跟踪显示的 currentFragment,然后您可以轻松地使用 Activity 中的代码onBackPressed 方法
如果您需要更多说明,请告诉我。
关于java - 如何应用在 fragment 中按下后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102054/