Android サポート ライブラリ v13 を使用しています。私が理解できなかった奇妙なことがあります。
新しいアクティビティを作成するとき、フラグメントを次のようにロードします。
主な活動のレイアウト:
...
<FrameLayout
android:id="@+id/fragment_1"
... />
主onCreate()
な活動中:
mFragment = (FragmentActivity) getSupportFragmentManager().findFragmentById(R.id.fragment_1);
// if screen orientation changed, no need to create new instance of fragment
if (mFragment == null) {
mFragment = ...; // create new instance of fragment
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_1, mFragment);
// because this is called ONCE, we can use this method
ft.commitAllowingStateLoss();
}
現在、すべてがエミュレーター 1.5、1.6、および 2.2 で完全に機能します。私は電話2.2.2を持っています。
ただし、例外があります。アプリが実行中で、画面の向きが変更された場合です。中onActivityCreated()
、getActivity()
たまに戻るnull
。これは、エミュレータ 1.5/1.6/2.2 でのみ発生します。
私の携帯電話2.2.2は非常にうまく動作します。何百回もテストしましたが、そのバグは見つかりませんでした。他のエミュレーター 3.x、4.x でも問題なく動作します。残念ながら、私は電話 1.5/1.6/2.2 を持っていません。
それで、あなたはこれについて経験がありましたか?それはサポート ライブラリまたはエミュレータのバグですか?