屏幕旋转时Fragment被调用两次

3

我是新手Android开发者,在屏幕方向改变时遇到了这个问题。每当屏幕方向改变时,fragment会被调用两次。以下是我的代码示例。我查看了其他帖子,但找不到答案。请有经验的人指导我。

public class SampleFragment extends Fragment {

    static final String TAG_NAME = SampleFragment.class.getSimpleName();


    List<PhrToolBar> mToolBarList;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        DaggerHelper.getAppProviderComponent().inject(this);

        mRootView = null;

        getActivity().setTitle("Personal Health Records");

        mRootView = inflater.inflate(R.layout.sample_phr_main_fragment, container, false);

        mBinding = DataBindingUtil.bind(mRootView);
        mBinding.setViewModel(mViewModel);

        setHasOptionsMenu(true);

        return mRootView;

    }

请发布完整的代码,例如父activityfragmentmanifest - Kishore Jethava
当屏幕旋转时,活动的onCreate方法会再次被调用。为了避免这种情况发生,在您的清单文件中为该活动添加(android:configChanges="orientation|keyboardHidden")这一行代码。 - Ragini
@Ragini 在屏幕旋转时,活动中的 onStart() 和 onResumeFragments() 方法会被调用。 - Evolution
1个回答

6
将以下代码添加到您的Activity的onCreate方法中:
if (savedInstanceState == null) {
    // only create fragment if activity is started for the first time
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    FragmentOne fragment = new FragmentOne();

    fragmentTransaction.add(R.id.fragment_container, fragment);
    fragmentTransaction.commit();
} else {        
    // do nothing - fragment is recreated automatically
}

以下是与编程相关的内容,请将其从英文翻译为中文。仅返回翻译的文本:请提及答案是否有用 - shaik subhani
1
稍微详细一点,当你不添加这个检查片段时,它会在旋转事件后由Android为你创建,并且你还会在你的activity#onCreate中创建另一个。 - erhun
这个放在哪里? - c0dehunter
在活动的onCreate方法内部 - Ankit Kumar Maurya
你需要添加片段的地方。可以是在onCreate方法中,或者其他地方。 - shaik subhani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接