我不知道這是否可行。我擁有的是一個有多個按鈕的活動。每個按鈕都會將用戶帶到一個新的活動,在該活動中用戶輸入一些數據(即firstName)和完成按鈕,然後返回主活動。我還有一個彙總按鈕,可以顯示從各個按鈕輸入的所有內容。我知道如何將數據傳遞給新的活動,但有沒有辦法將數據傳遞到第三個活動?使用Extra將數據傳遞給Android中的其他活動
**讓我看看我能否更好地澄清我的問題。我有3項活動(A,B,C)。活動A是我的主要活動,從A我想去活動B並添加一些數據(如名稱)。然後在活動B中,當我點擊「完成」按鈕時,我會返回到活動A.在活動A中,我點擊「摘要」按鈕並轉到活動C.在活動CI中應該看到一個帶有我在活動B中放置的信息的文本視圖。 *
任何幫助或方向將真的有所幫助。謝謝。 這就是我有兩個活動之間傳遞數據時,作爲一個開始:
這個按鈕帶你到一個頁面中輸入一個名稱
//button to display event name
mEventNameButton = (Button) findViewById(R.id.eventNameButton);
mEventNameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventName.class);
startActivity(i);
}
});
在事件名稱活動(1)這裏是代碼我有一個與額外的完成按鈕:
mEventNameDoneButton = (Button)findViewById(R.id.eventNameDoneButton);
mEventNameDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventName.this, EventDetails.class);
i.putExtra("eName", mEventNameEditText.getText().toString());
startActivity(i);
}
});
這裏是在EventDetails活動(2日)在總結
按鈕終於在EventSummary活動(第3)中顯示額外的代碼。
mResultEventName = (TextView)findViewById(R.id.resultEventName);
Intent i = getIntent();
String eName =i.getStringExtra("eName");
//display info
mResultEventName.setText("Event name has been set: " + eName);
}
什麼,我得到的是 「事件名稱已被設置爲空」
**編輯** 這是我嘗試,但不理解如何使用onActivityResult的活動Ç 。 更新的代碼:活動A
//button to display event name
mEventNameButton = (Button) findViewById(R.id.eventNameButton);
mEventNameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventName.class);
startActivityForResult(i, 1);
}
});
//button to display event summary
mEventSummaryButton = (Button)findViewById(R.id.eventSummaryButton);
mEventSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventSummary.class);
startActivity(i);
}
});
}
@Override
protected void onActivityResult(int RequestCode, int resultCode, Intent data){
if (data == 1)
{
return;
}
}
}
Actvity B碼:
//done button to go back to event details
mEventNameDoneButton = (Button)findViewById(R.id.eventNameDoneButton);
mEventNameDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventName.this, EventSummary.class);
i.putExtra("eName", mEventNameEditText.getText().toString());
setResult(RESULT_OK, i);
finish();
startActivity(i);
}
});
編輯爲onActivityResult:
@Override
protected void onActivityResult(int RequestCode, int resultCode, Intent data){
if (data != null)
{
final String eventName = data.getStringExtra("ename");
//button to display event summary
mEventSummaryButton = (Button)findViewById(R.id.eventSummaryButton);
mEventSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventSummary.class);
i.putExtra("ename", eventName.toString());
startActivity(i);
}
});
}
您更新的問題是不同的。在'startActivityForResult()' – ataulm 2014-09-04 14:13:54
上查找用法以確認:活動A開始活動B.用戶在活動B中輸入信息,然後單擊完成(關閉活動B,並顯示活動A,該活動在後臺打開)。該信息應該返回到活動A,然後通過額外的方式將信息傳遞給活動C. – ataulm 2014-09-04 14:15:23
這正是我想要做的。謝謝 – hozdaman 2014-09-04 14:17:47