更新时间:2023-02-19 10:08:16
开始时,我使用popbackstack方法,但是每次按下后退按钮时,它都会循环迭代.所以我改变了我的概念,而不是popbackstack我保持不变的变量.并使用它来管理我的片段.为此,请按照以下步骤操作.
At starting i use popbackstack method but in this it iterate loop every time when back button is pressed. So i change my concept instead of popbackstack i maintain constant variable. and using this i manage my fragment. For that Follow Below Steps.
第1步:至少设置两个全局变量.
Step 1: make atleast two Global Variable.
public static String currentTAG="HomeFragment";
public static String AboutUsFragment="AboutUsFragment";
public static String HelpfulTipsFragment="HelpfulTipsFragment";
第2步:在片段打开"时更改CurrentTag值.
Step 2: Change CurrentTag value when Fragment Open.
在currentTAG = HomeFragment中的Home Fragment中 类似地,对于 aboutUsFragment set CurrentTAG = AboutUsFragment;
In Home Fragment in currentTAG=HomeFragment similarly for aboutUsFragment set CurrentTAG=AboutUsFragment;
步骤3:然后在您的主要活动之后,在Onbackpress方法中写下以下代码.
Step 3: Then After in Your main Activity Write down Below Code in Onbackpress method.
if (Const.currentTAG.equals(Const.HomeFragment)) {
ExitApp();
}else{
getSupportFragmentManager().beginTransaction().replace(R.id.maincontainer, new HomeFragment()).addToBackStack(null).commit();
}
private void ExitApp() {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.app_name);
builder.setMessage(R.string.ask_before_close);
builder.setIcon(R.mipmap.ic_launcher);
//final AlertDialog dialog = builder.create();
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.show();
}
类似地,您可以管理多个片段,而无需迭代循环和popbackstack.
Similarly You Can Manage Multiple Fragment Without Iterating loop and popbackstack.
注意::加载片段时,请使用替换"而不是像下面的代码那样添加
NOTE: When You Load Fragment Use Replace instead of add like below Code
getSupportFragmentManager().beginTransaction().replace(R.id.maincontainer, new AboutAppFragment()).addToBackStack(null).commit();