11

2つのアクティビティActivity1とActivity2があり、Activity2を開始せずにActivity1からActivity2にデータを送信したい場合

Activity2を開始したい場合は、Activity1.javaでこのコードを使用します。

Intent intent ;
Bundle bundle = new Bundle();

bundle.putString(BG_SELECT, hexColor);

intent = new Intent(getApplicationContext(), Activity2.class);

intent.putExtras(bundle);

// this is to start but I want just refresh Activity2 not start it
startActivityForResult(intent, uniqueNo);

およびActivity2.java

bundle = getIntent().getExtras();

if (bundle != null) {
   bgColor = bundle.getString(SebhaActivity.BG_SELECT);
   System.out.println("in Activity2, selected BG: "+bgColor);

}

Activity2を更新して、Start itを使用せずにActivity2内のデータを検索するにはどうすればよいですか?前もって感謝します。

4

5 に答える 5

15

を使用できますLocalBroadcastManager。Activity1 が Activity2 に何かを送信するというシナリオでは、次のようにします。

# Activity1

Intent intent = new Intent("INTENT_NAME").putExtra(BG_SELECT, hexColor);
LocalBroadcastManager.getInstance(Activity1.this).sendBroadcast(intent);

Activity2 では、最初に onCreate メソッドなどでレシーバーを登録する必要があります。次に、次のように BroadcastReceiver を使用してインテントを取得します。

# Activity2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter("INTENT_NAME"));
}

次に、 を登録してフィールドmReceiverを取得しますBG_SELECT

# Activity2

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String receivedHexColor = intent.getStringExtra(BG_SELECT);
    }
};
于 2015-11-04T10:38:02.227 に答える
7

次のアクティビティ (データが必要な場所、Activity2 など) がここから開始されない場合は、アクティビティ 1 の SharedPreferences にデータを保存し、そこに着いたときにアクティビティ 2 でアクセスできます。

于 2013-02-12T13:42:26.727 に答える
1

これを試して、

非活動クラスを 1 つ作成します。

  public class Datas {
  public static String name;
  }

この非アクティビティ クラスをアクティビティ クラスで宣言します。

Data  mData = new Data();
String str = mData.name
于 2013-02-12T13:43:27.767 に答える
1

2 つのアクティビティの両方が実行されている間にデータを共有する場合は、両方に使用できるストレージを使用する必要があります。

を確認するShared Preferencesか、両方のアクティビティでアクセスできるグローバル ストレージ クラスを作成してください。それを行うための本当の「方法」はありません。

于 2013-02-12T13:46:30.483 に答える