且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

更换后如何返回第一个Android Fragment

更新时间: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();