0

私は3つの活動A1、A2、A3を持っています

A1 コール A2 (A1 はスタックに移動)

A2 コール A3 (A2 もスタックに移動)

そしてA3はA1を呼び出します(A1は新しいインスタンスではなくスタックから呼び出す必要があります...)

A1 の新しいインスタンスを作成したくありません。スタックから呼び出したいだけです。

A1 に追加の文字列を送信したいのですが、問題はここにあります。 putExtra() を使用して A1 に文字列を送信すると、A1 はそれを認識できません!

A1 の onResume() に getIntent() を入れましたが、動作しません...

A3のコード

Intent in = new Intent(A3.this,A1.class);
in.putExtra("ACTIVITY", "A3");
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(in);

A1のコード

@Override
protected void onResume() {
  super.onResume();
  Log.e("LOG", getIntent().getExtras().getString("ACTIVITY"));
  if(getIntent().getExtras().getString("ACTIVITY")=="A3"){
     new LoadAllMyOrders().execute();
  }else{
     new LoadAllMyshops().execute();    
  }
}
4

5 に答える 5

1

A1 の起動モードを「singleTask」に設定すると、Activity のメソッド「void onNewIntent(...)」からインテントを取得する必要があります。

于 2013-10-22T10:53:40.267 に答える
1

文字列を equals() と比較する必要があります。

if(getIntent().getExtras().getString("ACTIVITY").equals("A3")

オブジェクト参照を比較しているだけなので、この==式が false と評価される理由もあるかもしれません。

于 2013-10-22T09:52:41.060 に答える
1

アプリケーションレベルの静的変数を使用して、必要な場所からその値を設定すると、アクティビティからアクセスできます!!

于 2013-10-22T09:51:09.483 に答える
1

誤解していなければ、 と のペアstartActivityForResultでこの動作を実現できますonActivityResult。また、Java での文字列比較はメソッドを介して実行されますequals==文字列参照を比較します

于 2013-10-22T09:52:12.967 に答える