【发布时间】:2017-10-31 08:49:14
【问题描述】:
我有 2 个Fragments F1 和 F2。我使用以下代码从Activity 打开第一个Fragment F1:
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();
然后从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();
问题是当我关闭Fragment F2 并且Fragment F1 进入前台时。整个 F1 正在重新创建(再次调用onViewCreated())。我不希望 F1 在前台重新创建。
【问题讨论】:
-
我们会的,这就是它的工作方式。如果您有一些在
onViewCreated中运行的代码,请尝试移动它。 -
你错了。
onViewCreated()并不意味着正在重新创建片段。它只是意味着正在重新创建片段的视图。如果要在创建片段时运行代码,请将其放入onCreated()。