5

onCreate() で FragmentTransaction.add() を呼び出し、onDestroy() で FragmentTransaction.remove() を呼び出す必要があることを理解していると思いました。onDestroy() でアプリがクラッシュし、次のエラーが表示されます。

06-26 15:25:50.213: E/AndroidRuntime(579): java.lang.RuntimeException: Unable to destroy activity {com.myapp/com.myapp.MainActivity}: java.lang.IllegalStateException: Activity has been destroyed

onCreate/onDestroy() にない場合、いつこれらを呼び出すのですか?

4

2 に答える 2

4

それに関する私の問題は、水平ビューに切り替えてから垂直ビューに戻ると、ネストされたフラグメントの少なくとも 1 つのレイアウトが重複していることです。

これは、常ににフラグメントを追加しているためだと思いますonCreate()。Android は、構成の変更時にフラグメントを自動的に再作成します。したがって、onCreate()フラグメントを追加する前に、フラグメントがすでに存在するかどうかを確認する必要があります。

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getSupportFragmentManager().findFragmentById(android.R.id.content)==null) {
      getSupportFragmentManager().beginTransaction()
                                 .add(android.R.id.content,
                                      new RotationFragment()).commit();
    }
  }
于 2013-06-26T20:46:04.430 に答える