アクションバータブのあるアクティビティがあります。各タブにはフラグメントが含まれています。デバイスをローテーションすると、対応するフラグメントのバンドルが null になります。これは、Android 3.2 以降のデバイスを使用している場合は注意が必要ですが、デバイスが Andoird3.0 の場合に発生しています。この問題に取り組んだ後、頭痛がします。SOのさまざまなリンクをチェックしましたが、助けにはなりません。十分な詳細を説明しましたが、さまざまなケースでユーザーがコード スニペットを要求するため、いくつかのコード スニペットを提供します。
私のフラグメントクラスでは、この値を保存しています
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putBoolean("textboxVisible", true);
}
これは、以下のように取得した 1 つのブール変数を格納しています。
/**
* Function called after activity is created. Use this
* method to restore the previous state of the fragment
*/
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
//restore the state of the text box
boolean textboxVisible = savedInstanceState.getBoolean("textboxVisible");
if (textboxVisible)
{
//do some stuff
}
}
}
しかし、ローテーション後、savedInstanceStateは null になります。何が悪いのかわかりません。3.2 以下では、フラグメントの onCreateView() がバンドル値で呼び出されないというドキュメントを読みました。しかし、これに対処するために。どんな助けでも大歓迎です。