1

私のアプリはAPI8以降を対象とし、ActionbarSherlockを使用しています。Activityを拡張しますSherlockFragmentActivity。ビューページャー用のフラグメントアダプターは次のとおりです。

public class MyFragmentAdapter extends FragmentPagerAdapter {

  public Fragment getItem(int position) {
        ...
    }

  @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);

        FragmentManager manager = ((ListFragment) object).getSherlockActivity().getSupportFragmentManager();
        FragmentTransaction trans = manager.beginTransaction();
        trans.remove((Fragment) object);
        trans.commit();
    }
}

destroyItemページを削除するために使用されますFragmentPagerAdapter。これは最初は問題なく機能します。おそらく最初の2回はページが削除されます。しかし、ページの削除を続けるmanagerと、nullが返され、アプリがそのmanager.beginTransaction()行でクラッシュします。

なぜこれなのかわからないようです...

4

2 に答える 2

1

私は問題を理解しました。リスト内のnullアイテムを適切に削除していないため、にListFragment渡されたものdestroyItemがあります。FragmentManager == nullWeakReference

于 2013-03-14T17:30:31.800 に答える
0

最後に、数日前にエラーを見つけることができました。

解決策は簡単です:

グローバル変数として新しいバンドル変数を作成するだけです

Bundle datosGuardados;

savedInstanceState のデータを格納する

datosGuardados = savedInstanceState;

最後に、getFragmentManager を使用する前に null かどうかを確認するだけです

if (datosGuardados != null) infoF = (InformacionFragment) getFragmentManager().findFragmentById(R.id.posicionamiento_layout);
于 2016-11-16T08:18:41.163 に答える