Android 保留片段:异步任务和屏幕旋转

Android 保留片段:异步任务和屏幕旋转,android,android-fragments,android-asynctask,screen-rotation,Android,Android Fragments,Android Asynctask,Screen Rotation,我的应用程序中保留了一个片段,可以从Web服务下载一些数据,并在listview中显示结果。这是我对oncreate和oncreate视图的实现 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //retain fragment for configuration change setRetainInstance(true); }

我的应用程序中保留了一个片段,可以从Web服务下载一些数据,并在listview中显示结果。这是我对oncreate和oncreate视图的实现

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //retain fragment for configuration change
    setRetainInstance(true);
}

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

    if (savedInstanceState == null) {
          // i'm here when fragment is created first time
          view = inflater.inflate(R.layout.fragment, container, false);
          // call a private method for init my widgets
          setWidgets(view); 
          //call here asynctask for download data
    } else {
        // i'm here after a configuration change, just update views
        String myData = MyApp.getStoredData().toString();
        // update my widget with previous stored data
    }

}
MyApp是我的类,它扩展了应用程序,并保留asynctask下载的数据。 现在,如果我在AsyncTask完成时旋转设备,一切都正常,但如果我在AsyncTask尚未完成时旋转设备,则在调用MyApp.getStoredData().toString()时会获得一个nullpointer异常(我在null对象上调用toString)


如何修复它?

MyApp.getStoredData().toString()
方法中,您可以异步执行任务,但此方法将立即返回。MyApp.getStoredData().toString();您还应该在我的应用程序异步任务中发布代码,这样就可以告诉您最佳解决方案。@Khemraj异步任务从Web服务下载并解析一些数据,并将结果存储在getStoredData()应返回的对象中