Android 存储片段以处理屏幕旋转变化

Android 存储片段以处理屏幕旋转变化,android,fragment,screen-rotation,Android,Fragment,Screen Rotation,我有一个由一个活动和3个片段组成的应用程序。活动将创建一个菜单,其中包含创建适当片段的按钮。我的代码在没有屏幕旋转的情况下工作得很好,但是当我旋转屏幕时,它会中断 在创建片段时,我的第一次尝试没有包括setRetainInstance(true)调用。我发现的问题是,在两次替换片段(一个片段保留在后堆栈上)后,如果我旋转屏幕,则在当前未显示的片段中会出现空指针异常Edit:请注意,空指针异常出现在下面显示的setOnItemClickListener调用中lv在onCreateView()方法中

我有一个由一个活动和3个片段组成的应用程序。活动将创建一个菜单,其中包含创建适当片段的按钮。我的代码在没有屏幕旋转的情况下工作得很好,但是当我旋转屏幕时,它会中断

在创建片段时,我的第一次尝试没有包括
setRetainInstance(true)
调用。我发现的问题是,在两次替换片段(一个片段保留在后堆栈上)后,如果我旋转屏幕,则在当前未显示的片段中会出现空指针异常Edit:请注意,空指针异常出现在下面显示的
setOnItemClickListener
调用中
lv
onCreateView()方法中声明。

在第二次尝试中,我在创建片段时包含了一个
setRetainInstance(true)
调用。这解决了第一个问题。但是,我的一个片段是
ListFragment
,当我旋转屏幕时,
listmclicklistener
似乎不再被设置。以下是我设置侦听器的代码:

ListAdapter adapter = new SimpleAdapter(getActivity(),
        gameslist, R.layout.list_object,
        new String[] { TAG_ID, TAG_NAME, TAG_LOCATION, TAG_CREATED },
        new int[] { R.id.id, R.id.name, R.id.location, R.id.created_date });
setListAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0,
                View arg1, int position, long arg3) {
            // ...
        }
});
ListAdapter=new simpledapter(getActivity(),
gameslist,R.layout.list\u对象,
新字符串[]{TAG_ID,TAG_NAME,TAG_LOCATION,TAG_CREATED},
新int[]{R.id.id,R.id.name,R.id.location,R.id.created_date});
setListAdapter(适配器);
lv.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0,
视图arg1,内部位置,长arg3){
// ...
}
});
对这个问题有什么想法或解决办法吗?我对如何使用片段进行设计的理解完全不正确吗

谢谢你的帮助

编辑:另外,仅就我的理解而言,代码中正在重新创建的片段在哪里?它们不在我的活动的
oncreate()
函数中。谢谢

明白了!我在onCreate()函数中调用AsyncTask,当屏幕旋转时调用该函数。但是,我在onCreateView()函数中声明了lv,在创建视图之前不会调用该函数。Nullpointerexception

您的片段中是否实现了onCreate(…)和onResume()以及onCreateView(…)


适配器代码在三个代码中的哪一个

您的片段中是否实现了onCreate(…)和onResume()以及onCreateView(…)?适配器代码在这三个代码中的哪一个?我已经实现了onCreate和onCreateView。适配器代码位于onCreate调用的AsyncTask中。谢谢。最后一件事——适配器代码在OnPostExecute方法中,对吗?是的。谢谢你的帮助!