为什么我的ListView在片段中的方向更改后变为null?

adn*_*eal 3 java android android-fragments

在我的一个,我Fragments有一个我从父母打电话的方法Activity.这个方法没什么特别的,它只是将我滚动ListView到一个位置.

public void scrollToSomething() {
    mListView.smoothScrollToPosition(The position I supply);
}
Run Code Online (Sandbox Code Playgroud)

当我最初调用这个方法时,它就像我期望的那样工作,但是当我旋转我的设备并再次调用它时,我会NullPointerException从我的设备中抛出一个ListView.我很遗憾为什么会这样.我试过打电话setRetainInstance(true).ListView在调用方法之前我已经尝试检查我是否为null,如果是,那么我再次初始化它,但这也不起作用.我试过onCreateView用几种不同的方式改变我,想想那里可能出现了问题.

onCreateView

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    /* The View for the fragment's UI */
    final ViewGroup mRootView = (ViewGroup)inflater.inflate(R.layout.fragment_list_base,
            container, false);
    /* Initialize our ListView */
    mListView = (ListView)mRootView.findViewById(R.id.fragment_list_base);
    return mRootView;
}
Run Code Online (Sandbox Code Playgroud)

Fragment附连到ViewPager使用简单FragmentStatePagerAdapter.我已经仔细查看onDestroy了我Fragment和父母的方法,Activity看看我是否正在调用可能导致错误的内容,但没有什么突出的.我不确定我遇到的是某种错误,或者我只是忽略了什么.任何帮助或建议都会很大.我不完全确定还有什么要补充的,因为我只是为什么会发生这种情况而迷失方向,但如果有人有问题,我会发布您认为合适的任何代码.

Raj*_*dra 5

这可能对你有所帮助

如果您android:targetSdkVersion="12"或更少:

android:configChanges="orientation|keyboardHidden">
Run Code Online (Sandbox Code Playgroud)

如果您android:targetSdkVersion="13"或更多:

android:configChanges="orientation|keyboardHidden|screensize">
Run Code Online (Sandbox Code Playgroud)