Android:在方向更改后为ListFragment设置列表适配器会导致空列表

Android:在方向更改后为ListFragment设置列表适配器会导致空列表,android,android-fragments,orientation-changes,Android,Android Fragments,Orientation Changes,我正在尝试在我的Android应用程序上处理方向变化。在方向改变后,我试图为我的ListFragment设置适配器时遇到了一个问题。没有例外,但列表仍然为空;它没有填充给定的数据 我知道在方向改变时,整个活动都会重新创建。我还实现了一种将数据从旧方向传递到新方向的方法。在调用ListFragment.setAdapter()之前,我已经检查过数据的ArrayList不是空的,它包含与前面完全相同的数据。我还确信我的自定义适配器类中没有缺陷,因为它第一次完美地填充了列表 另外,我的目标是低于3.0

我正在尝试在我的Android应用程序上处理方向变化。在方向改变后,我试图为我的ListFragment设置适配器时遇到了一个问题。没有例外,但列表仍然为空;它没有填充给定的数据

我知道在方向改变时,整个活动都会重新创建。我还实现了一种将数据从旧方向传递到新方向的方法。在调用ListFragment.setAdapter()之前,我已经检查过数据的ArrayList不是空的,它包含与前面完全相同的数据。我还确信我的自定义适配器类中没有缺陷,因为它第一次完美地填充了列表

另外,我的目标是低于3.0的设备,所以我使用
android.support.v4.app.ListFragment
来实现我的ListFragment

下面是我的onCreate()方法:


任何帮助都将不胜感激。

可能没有调用您的getView方法。要解决此问题,请在ListFragment中调用:setListShowed(true)。在使用兼容性库时,您有义务这样做

亲切问候,,
Bram

我不能用这里的代码来判断,但我的直觉是,实际发生的情况是,您正在更新其中一个“传出”列表视图上的数据,而不是新的列表视图。当然,这只是一种预感。我认为情况并非如此,因为我正在用以下代码重新创建这两个ListFragment:
fragmentA=new MyListFragment();fragmentB=新的MyListFragment()
private ListFragment fragmentA;
private ListFragment fragmentB;
@Override
public void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);
    setContentView(R.layout.my_activity);

    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab tabA = bar.newTab().setText("TabA");
    ActionBar.Tab tabB = bar.newTab().setText("TabB");

    fragmentA = new MyListFragment();
    fragmentB = new MyListFragment();

    Object retained = getLastCustomNonConfigurationInstance();
    if (retained instanceof MyAsyncTask) {
        ResultWrapper result = ((MyAsyncTask) retained).getResult();
        Log.d("MyActivity", "retained is instance of MyAsyncTask");
        if (result.nowResult == null) {
            Log.d("MyActivity", "null");
        } else {
            Log.d("MyActivity", "nowResult size" + result.nowResult.size());
            fragmentA.setListAdapter(new MyListAdapter(this,
                R.layout.my_list_item, result.nowResult));
        }
        fragmentB.setListAdapter(new MyListAdapter(this,
                R.layout.my_list_item, result.myResult));
    } else {
        fetcher = new MyAsyncTask(this);
        fetcher.execute();
    }

    tabA.setTabListener(new MyTabListener(fragmentA));
    tabB.setTabListener(new MyTabListener(fragmentB));

    bar.addTab(tabA);
    bar.addTab(tabB);

}