sag*_*uri 3 android android-fragments
我有 2 个Fragments F1和F2。我使用以下代码从 中打开第一个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再次被重新创建。
对于第二个片段,使用添加而不是替换。
replace- 删除现有片段并添加新片段。当在片段 F2 中按下后退按钮时,将再次调用 oncreateView 中的片段。
add - 保留现有片段并添加一个新片段,这意味着现有片段将处于活动状态并且它们不会处于“暂停”状态。当在片段 F2 中按下后退按钮时,不会再次调用片段 F1 的任何方法。
transaction.add(android.R.id.content, f2).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5354 次 |
| 最近记录: |