8

クラスA、B、Cがあります。クラスAはインテントをBに送信し、BはCを実行し、CはBに戻ります.....しかし、BクラスのonCreate内では、クラスAのインテントが必要です。クラスCから来たのですが、それは得られませんが、それでもクラスAの意図が必要です

これを回避する方法について何かアイデアはありますか?解決策の1つは、extra.getStringをデータベースなどに保存することだと思いますか?

Bundle extras = getIntent().getExtras();
 newString = extras.getString("ID"); 
4

3 に答える 3

7

私はあなたの活動の流れを正確に知らないので、これは解決策ですが、適切なものではないかもしれません。

あなたが新しい活動を始めるとき、余分を入れてください

intent.putExtra("ID_FROM_A", value); // except for ActivityA value = mIdFromA
startActivity(intent);

受信活動について

onCreate()
{
    mIdFromA = getIntent().getStringExtra("ID_FROM_A");
}
于 2013-03-10T20:48:41.203 に答える
2

だから私がそれを正しく持っているなら:

アクティビティA:

  • intentAtoBを作成します
  • アクティビティBを開始します

アクティビティB

  • intentAtoBを受け取ります
  • intentBtoCを作成します
  • アクティビティCを開始します

アクティビティC

  • intentBtoCを受け取る
  • 何かをします

今:アクティビティCはありますか:

  1. finish()を使用してアクティビティBに戻る、または

  2. アクティビティBを再開しますか?

1の場合、アクティビティBに戻ると、最初に作成されたときに設定したすべてのものが残ります。したがって、onCreateofBのインテントからすべてを抽出する必要があります。

2の場合、各アクティビティを開始するために使用するインテントで情報をチェーンに渡す必要があります。

(a)シーケンスがどうなるかを確認し、(b)上記が機能しない理由を明確にできれば、前進できると確信しています。

于 2013-03-11T09:15:34.733 に答える
0

「クラスA」であることを証明する追加機能を使用してクラスAからインテントを取得し、それをローカルインテントに設定できます。

extras = getIntent().getExtras();
String a = extras.get("KEY");

if (a.equlas("A_CLASS") {
    class_a_extras = getIntent();
}
于 2020-02-04T18:53:48.563 に答える