我正在構建一個應用程序,其中第一個Activity由startActivityByResult啓動另一個應用程序。在完成一些設置後,我需要將設置結果發回。 所以我重寫了第二個Activity的onPause()方法,我得到了意圖putExra,並通過setResult()發回。 回到第一個活動。 onActivityResult肯定已被調用。我之前設置了resultCode,但意圖數據爲空。我無法弄清楚什麼是錯的。 這是我的代碼 的第一個活動OnActivityResult返回,但我得到了正確的requestCode
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("page1", requestCode + "_");
Log.e("page1", resultCode + "_");
Log.e("page1", (data == null) + "_");
// if ((requestCode == 1) && (data != null)) {
if (data != null) {
String size = data.getStringExtra("size");
Log.e("switch", size + "_");
switch (size.charAt(0)) {
case '1': {
text.setTextSize(10);
}
break;
case '2': {
text.setTextSize(20);
}
break;
case '3': {
text.setTextSize(30);
}
break;
}
}
}
我的第二個活動
@Override
protected void onPause() {
Intent intent = getIntent();
Log.e("prefs", (intent == null) + "_");
intent.putExtra("size", size);
setResult(3, intent);
super.onPause();
}
我在logcat中測試。在第二個活動中。即將發送的意圖絕對不爲空。但是當它進入第一個活動。 null剛剛返回。這讓我非常瘋狂。幫幫我!
你可以告訴你爲什麼在在onPause .. –
設置結果檢查我的答案在你的問題下面。並檢查作爲答案,如果它適合你 –
@BharatSharma原因是第二個活動是一個PreferenceActivity,其中一些喜好。如果我讓一個聽衆或類似的東西,每次我做任何修改,我必須發回一個我認爲是乏味的意圖。所以我正在考慮一種方式,在ueser完成所有設置後,按「返回」,此時secoend活動會將結果發送回去。但還有一件事要確保結果應該在第一個Activity重新啓動之前到達。 – ChinaMan