2

私は3ページあるアプリを持っていますが、そのうちの1つはメインページです。ユーザーは、ユーザーが2つのサブページのいずれかに移動した場合に保存したいいくつかのフィールドに入力できます。私はonPause()とonSaveInstanceState()を調べてきました。2つについて明確な説明が必要なだけだと思います。また、onPause()の方が優れている場合は、コードの例です。これは私がonSaveInstanceState()のために持っているものです。

protected void onSaveInstanceState(Bundle outState) {
    // Save away the original text, so we still have it if the activity
    // needs to be killed while paused.

    outState.putDouble("quizPts",qpts);
    outState.putDouble("quizV",qvalue);
    outState.putDouble("tPts",tpts);
    outState.putDouble("tValue", tvalue);
    outState.putDouble("hPts", hpts);

これが、IDと値を指定してバンドルを設定する方法です。

public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  qpts = outState.getDouble("quizPts");
  qvalue = outState.getDouble("quizV");
  tpts = outState.getDouble("tPts");
  tvalue = outState.getDouble("tValue");
  hpts = outState.getDouble("hPts");

これは私がそれを取り戻すことを計画している方法です、問題は私がそれを復元するためにバンドルを渡す方法を理解していないことです。UIに設定される変数に戻す必要のある変数を設定しています。

どんなアドバイスも素晴らしいでしょう

初心者のandroiderからの感謝

4

2 に答える 2

1

最適なオプションは、共有設定です。オンポーズは、電話などでアプリが一時停止したときに懸念事項に対応できるように設計されています。ただし、共有設定を使用すると、データを保存し、保存された値が使用できない場合にデフォルト値でデータを回復する方法が提供されます。このデータは、ユーザーセッション間で保持されます(アプリケーションが強制終了された場合でも)。ただし、bool、intなどのプリミティブデータ型以外のものを保存することを計画している場合は、適切なオプションではありません。

http://developer.android.com/guide/topics/data/data-storage.html#prefを参照してください

于 2011-06-28T03:20:31.503 に答える
0

バンドルを自分の周りに渡す必要はありません。Activityフレームワークがそれを処理します。使用onSaveInstanceState():アクティビティクラスが何らかの理由でシステムによって破棄された場合、それが呼び出されるので、ロジックをそこにうまく配置する必要があります。onPauseアクティビティが破棄されたかどうかに関係なく、アクティビティを離れると常に呼び出されます。

私もあなたのチェックを追加しますonRestoreInstanceState

public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  if(outState.containsKey("quizPts")) qpts = outState.getDouble("quizPts");
  if(outState.containsKey("quizV")) qvalue = outState.getDouble("quizV");
  if(outState.containsKey("tPts")) tpts = outState.getDouble("tPts");
  if(outState.containsKey("tValue")) tvalue = outState.getDouble("tValue");
  if(outState.containsKey("hPts")) hpts = outState.getDouble("hPts");
于 2011-06-28T03:18:27.243 に答える