如何避免 Fragment 娱乐?

sag*_*uri 3 android android-fragments

我有 2 个Fragments F1F2。我使用以下代码从 中打开第一个Fragment F1Activity

MyFragment f1 = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("GameLevelType", "Learn");
dialog.setArguments(bundle);
FragmentTransaction gameTransaction = getSupportFragmentManager().beginTransaction();
gameTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
gameTransaction.add(android.R.id.content, f1).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

然后从Fragment F1我使用下面的代码打开另一个Fragment F2

MySecondFragment f2 = new MySecondFragment();
            Bundle bundle = new Bundle();
            FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
            bundle.putInt("CurrentPosition", getAdapterPosition());
            bundle.putIntArray("x", kolamTracingGameList.get(getAdapterPosition()).getX());
            bundle.putIntArray("y", kolamTracingGameList.get(getAdapterPosition()).getY());
            bundle.putInt("Level", (getAdapterPosition() + 1));
            bundle.putString("GameType", "Kolam");
            fragment.setArguments(bundle);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            transaction.replace(android.R.id.content, f2).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

问题是当我关闭Fragment F2并且Fragment F1出现时。整个F1正在重新创建(onViewCreated()再次调用)。当涉及到前景时,我不希望F1再次被重新创建。

sha*_*mar 6

对于第二个片段,使用添加而不是替换。

replace- 删除现有片段并添加新片段。当在片段 F2 中按下后退按钮时,将再次调用 oncreateView 中的片段。

add - 保留现有片段并添加一个新片段,这意味着现有片段将处于活动状态并且它们不会处于“暂停”状态。当在片段 F2 中按下后退按钮时,不会再次调用片段 F1 的任何方法。

transaction.add(android.R.id.content, f2).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)