我有一个包含一些按钮和一些片段的活动。
如果我单击按钮 A,我将显示片段“FragA”。当我在“FragA”中时,我可以执行一些操作,例如从图库中选择图片,选择图片后我需要留在“FragA”中。
但是当我选择图片时,我返回到 Activity 并且“FragA”被隐藏了。
如何执行一个动作并且仍然在同一个 Fragment 中或在 Activity 中显示正确的 Fragment?
我有一个包含一些按钮和一些片段的活动。
如果我单击按钮 A,我将显示片段“FragA”。当我在“FragA”中时,我可以执行一些操作,例如从图库中选择图片,选择图片后我需要留在“FragA”中。
但是当我选择图片时,我返回到 Activity 并且“FragA”被隐藏了。
如何执行一个动作并且仍然在同一个 Fragment 中或在 Activity 中显示正确的 Fragment?
您可以使用修改此代码再次重新创建片段并在 Activity 中替换它:
if (currentState == STATE_MAIN_FRAGMENT) {
return;
}
mainScreenFragment = (MainScreenFragment) getSupportFragmentManager().findFragmentByTag(MainScreenFragment.TAG);
if (mainScreenFragment == null) {
mainScreenFragment = new MainScreenFragment();
}
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.flFragmentContainer, mainScreenFragment, MainScreenFragment.TAG);
fragmentTransaction.commit();
首先“if”检查是否设置了片段。这不是必需的,但这是一个很好的做法。它可以防止您在不需要时替换片段。
对我来说有一件事很奇怪。因为您说 <<"FragA" is hidden>> - 这意味着它已经设置但容器不可见?然后 yourFragmentContainer.setVisiblity(View.VISIBLE); 在活动结果中。
最后可以帮助您的是保留片段,这样它就不会被破坏并再次重新创建。一些有用的链接:
理解 Fragment 的 setRetainInstance(boolean)
http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
或者您可以复制粘贴 Button 的 OnClickListener 中的内容,这样它也会在 onActivityResult 发生。