0

アクティビティの onCreate メソッドでフラグメントを作成してアタッチしています:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
mSlateFragment = new SlateFragment();
fragmentTransaction.add(R.id.root, mSlateFragment);
fragmentTransaction.commit();

その後、シークバーをデフォルト値に設定します。これを行うには、作成したばかりの mSlateFragment オブジェクトにアクセスする必要があります。

mSlateFragment.mSlate.setProperty(33);

ただし、この呼び出しはアプリのクラッシュを引き起こします。onStart でこの呼び出しを行うとクラッシュは解決しますが、デフォルト値を設定するだけで、アクティビティがフォアグラウンドになるたびにそれらをリセットしたくないため、問題があります。

アクセスしようとしている mSlate オブジェクトは、フラグメントの onCreateView で作成されます (ビューです)。

FragmentActivity とそのフラグメントのライフサイクルがどのように絡み合っているかについての情報はありますか? 通話を機能させる方法はありますか? フラグメントの oncreate でビューを作成しても、役に立たないようです。

4

1 に答える 1

0

SlateFragment2 つの理由から、デフォルト値をキャッシュします。

  1. フラグメントのライフサイクルに依存しなくなり、フラグメントの作成直後に設定できます
  2. onCreateView()Fragment が表示されるたびに呼び出されるため (たとえば、画面の回転後)、ビューが新しく作成されるため、デフォルト値が失われます。
于 2013-03-29T23:37:11.110 に答える