4

アクティビティ自体の内部からアクティビティを作成するために使用されるインテントを変更することは可能ですか?

簡単な説明 によって返されるインテントを更新することは可能ですか?

getIntent()

新しい値を使用し、システムがリソースのためにアクティビティを強制終了するか、方向が変更されたためにアクティビティが再作成された場合、または開発者オプションを使用してアクティビティを保持しないオプションが選択されている場合 (これにより、毎回アクティビティの再作成が強制されます)あなたがそれを離れて戻ってくる時)。

私が達成しようとしていること

データベースや SharedPreferences を使用せずに、アクティビティ間で変数を渡す (および変数を更新する) 方法を実現しようとしています。アプリが存在するときにのみデータが生きているだけでなく、アンドロイドのシステム設定で簡単に再作成できるようにしたい。何か新しいことに挑戦するというのは、私が思いついたアイデアに過ぎませんでした。私の説明がこれほどわかりにくいとは知りませんでした。申し訳ありません。

複雑な説明

シナリオ:

MainActivity から、以下のコードで別のアクティビティ (ActivityA) を作成します

Intent tmp = new Intent(getApplicationContext(), ActivityA.class);
tmp.putExtra("Key", "Value");
startActivity(tmp);

次に、ActivityAでその値を出力します

Log.i("TAG", getIntent().getExtras().getString("Key"));

上記の行は、ログに値を出力します

次に、ActivityAでボタンを押して、以下のコードでActivityBを開始します

Intent tmp = newIntent(getApplicationContext(), ActivityB.class);
startActvityForResult(tmp, 1000) //1000 is the result code

次に、ボタンを押したときに ActivityB が開始されたら、以下のコードでデータを ActivityA に送り返します。

Intent returnIntent = new Intent();
returnIntent.putExtra("Test1", "Value2");
setResult(RESULT_OK, returnIntent);
finish();

上記のすべてが問題なく動作します。私がやりたいのは、ActivityA の onActivityResult(...) で、ActivityA の作成に使用されたインテントをここで返された値で変更することです

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    //modify intent used to create this activity with value received in data
}

そのため、方向の変更時にアクティビティが再作成されるか、(開発者向けのオプションではアクティビティが保持されません) アプリケーションを終了すると、getIntent() 関数は新しいデータ (onActivityResult(...) で更新されたデータ) を返します。最初にそれを作成するために使用されたもの (MainActivity からの呼び出し)。

そのようなことは可能ですか?私はいじっています

setIntent(getIntent().putExtra("Key", "value obtained Intent data"))

しかし、家に帰った後にアクティビティが再作成されると、getIntent は onActivityResult(...) で作成された変更されたインテントではなく、最初のインテント (最初にそれを作成するために使用されたもの) をもたらします。

4

0 に答える 0