假設我有兩項活動 - MainActivity
和NameActivity
。 MainActivity
打開NameActivity
以便通過調用startActivityForResult(...)
從用戶那裏獲得一些輸入。如何在導航時從Android活動返回結果?
在NameActivity
,我已經覆蓋了finish
方法,使壓制回將返回名稱的結果:
@Override
public void finish() {
String name = nameEditText.getText().toString();
Intent intent = new Intent();
intent.putExtra(RESULT_NAME, name);
this.setResult(RESULT_OK, intent);
super.finish();
}
在MainActivity,我的處理結果如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_GET_NAME:
if (resultCode == RESULT_OK) {
String name = data.getStringExtra(SelectionActivity.RESULT_NAME);
Toast.makeText(this, "Hi " + name + "!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
在操作欄中使用向上按鈕時,有沒有辦法讓NameActivity
做同樣的事情?注意:我的應用程序的目標是Android 4.0(ICS)及其以上版本,所以Up導航「自動地」發生 - 也就是說,我沒有編寫任何代碼,只需在我的Manifest中指定父級活動,如下所示:
<activity
android:name="com.example.subactivitytest.NameActivity"
android:label="@string/title_activity_name"
android:parentActivityName="com.example.subactivitytest.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.subactivitytest.MainActivity" />
</activity>
謝謝!
非常感謝,這已經完成了。我曾在其他地方看過,但假設android.R.id.home是主頁按鈕(底部的中間按鈕),而不是操作欄中的向上按鈕 - 奇怪的術語... –
此外,它似乎沒有調用getActionBar()setHomeButtonEnabled(真)。 - 無論如何添加這條線(對於其他設備等)還是不必要的? –
它可能是由你的清單聲明處理的,所以在你的情況下它可能是不必要的。 – Submersed