0

横向きと縦向きで違うレイアウトを使いたい。xml ファイルをレイアウトとレイアウトランドにそれぞれ配置しました。

私の親アクティビティでは、android:configChanges="keyboardHidden|orientation|screenSize" を設定したので、向きの変更を自分で処理したいと考えています。

レイアウトを手動で変更するためにこれを試しました:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    getFragmentManager().beginTransaction().replace(R.id.content_frame, new FoodDashboardFragment()).commit();
}

それは機能します...しかし、ホーム画面に移動するとアプリがクラッシュします...だから..何かが足りないと思います。これを行う別の(簡単な)方法はありますか?

ログは次のとおりです。

07-23 17:58:46.717: E/AndroidRuntime(862): FATAL EXCEPTION: main
07-23 17:58:46.717: E/AndroidRuntime(862): java.lang.IllegalStateException: Fragment FoodDashboardFragment{41a06e30} is not currently in the FragmentManager
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.support.v4.app.FragmentManagerImpl.putFragment(FragmentManager.java:546)
07-23 17:58:46.717: E/AndroidRuntime(862):  at com.android.restauranthanovra.MainActivity.onSaveInstanceState(MainActivity.java:167)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.Activity.performSaveInstanceState(Activity.java:1137)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1215)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2951)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3010)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.ActivityThread.access$900(ActivityThread.java:130)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1222)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.os.Looper.loop(Looper.java:137)
07-23 17:58:46.717: E/AndroidRuntime(862):  at android.app.ActivityThread.main(ActivityThread.java:4745)
07-23 17:58:46.717: E/AndroidRuntime(862):  at java.lang.reflect.Method.invokeNative(Native Method)
07-23 17:58:46.717: E/AndroidRuntime(862):  at java.lang.reflect.Method.invoke(Method.java:511)
07-23 17:58:46.717: E/AndroidRuntime(862):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-23 17:58:46.717: E/AndroidRuntime(862):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-23 17:58:46.717: E/AndroidRuntime(862):  at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

0

フラグメント階層がある場合getChildFragmentManager()の代わりに使用します。getFragmentManager()例えば。親フラグメントにフラグメントページャーがある場合。

于 2013-10-12T09:23:51.910 に答える