2014-02-13 73 views
0

我有兩個活動A和B,活動A從B開始並繼續運行。 我想從B發回一些仍在後臺運行的信息。android獲取運行活動的意圖

我正在這樣做,但B正在開始一個新的A活動,而不是使用前一個。

Intent intent = new Intent(); 
intent.setClass(context, ObtenerDatos.class); 
intent.putExtra("EXTRA_ID", StationID); 
context.startActivity(intent); 
finish(); 

和A獲取數據,因爲這:

@Override 
    public void onResume() { 
     super.onResume(); 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      String datas= extras.getString("EXTRA_ID"); 
      if (datas!= null) { 
       // do stuff 
      } 
     } 
    } 

我在做什麼錯?

謝謝!

+0

Android按設計工作 - 畢竟,您明確開始了一項活動。如果這是返回結果,則在B中使用'setActivityResult'並在A中使用'onActivityResult'。由於A不可見,因此在B關閉之前真的沒有理由發送它的數據 - 如果您覺得需要這樣做,你做錯了什麼。 – 323go

回答

1

通常,您使用此startActivityForResult()onActivityResult()(見Starting Activities and Getting Results)。

例如,在活動答:

private static final int B_REQUEST = 0; 

// ... 

public void onClick(View v) { 
    Intent bIntent = new Intent(this, ActivityB.class); 
    startActivityForResult(bIntent, B_REQUEST); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == B_REQUEST && resultCode == Activity.RESULT_OK) { 
     // Get data out of the data Intent 
    } 
} 

在ActivityB當你想返回到活動答:

Intent data = new Intent(); 
// use intent.putExtra() to store your result data 
setResult(Activity.Result_OK, data); 
finish(); 
0

那麼從A使用startActivityForResult()開始B呢?

;當B完成,只需設置的結果,並呼籲finish()

Intent intent = new Intent(); 
intent.putExtra(DATA_EXTRA, data); 
setResult(Activity.RESULT_OK, intent); 

finish(); 

然後,在你使用onActivityResult()

1

您可以使用標誌Intent.FLAG_ACTIVITY_NEW_TASK。如果一個活動已經在運行,它將被帶到屏幕的最前面,而不是創建一個新的狀態。

Intent intent = new Intent(); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setClass(context, ObtenerDatos.class); 
intent.putExtra("EXTRA_ID", StationID); 
context.startActivity(intent); 
finish(); 
-1
Intent intent = new Intent(); 
intent.putExtra("EXTRA_ID", StationID); 
context.startActivity(intent); 
finish(); 

我覺得現在的問題是結束();因爲如果你完成它,Acvtivity B如何仍然運行?