0

アクティビティの状態を Android に保存しようとしています。基本的なシナリオは、2 つのアクティビティ A と B があります。アクティビティ A には 2 つの edittext フィールドが含まれています。ユーザーは値を入力し、インテントを介してアクティビティ B に移動します。アクティビティA(意図的に戻るボタンを提供しました)ユーザーが入力した2つのedittextフィールドにこれらの値を表示する必要があります(つまり、アクティビティAの状態を維持します)。また、共有設定を使用したり、それらを作成したりしたくありませんフィールドを static として。次のコードを使用しましたが、役に立ちません。

  @Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.manual_entry);
            edittext1=(Edittext)findViewById(R.id.edittext1);
    }

@Override
    protected void onSaveInstanceState(Bundle savedInstanceState)
    {
          super.onSaveInstanceState(savedInstanceState);
          savedInstanceState.putString("cardvalue_saved_inst", value_card_manuallyentered);
    }




@Override
    public void onRestoreInstanceState(Bundle savedInstanceState) 
    {
      super.onRestoreInstanceState(savedInstanceState);
      value_savedinstance = savedInstanceState.getString("cardvalue_saved_inst");
      Log.e("value_savedinstance",""+value_savedinstance);
      edittext1.setText(value_savedinstance);
    }
4

2 に答える 2

0

Activity B で finish() を呼び出すだけで、うまくいきました。

于 2013-05-31T16:19:12.630 に答える
0

ではActivityA、起動して自分でActivityB呼び出さない場合、終了時 (ユーザーが [戻る] ボタンを押したときなど) に、元の状態と同じ状態で表示されます。これは Android の標準的な動作であり、その必要はありません。何か特別なことをする。finish()ActivityBActivityA

onRestoreInstanceState()一時停止されたアクティビティが再開された場合は呼び出されませんActivityA(これは、起動ActivityBしてから終了する通常のケースActivityBです)。

onRestoreInstanceState()Androidがアクティビティを強制終了した場合 (たとえば、向きの変更中)、またはプロセスを強制終了した場合にのみ呼び出されます。その場合、ユーザーがアクティビティに戻ると、Android はアクティビティの新しいインスタンスを作成してから を呼び出しますonRestoreInstanceState()

于 2013-05-10T16:38:08.943 に答える