我有一個活動A在TabHost
,A startActivityForResult(B)
然後B startActivityForResult(C)
。
我遇到的問題是,:
在C時,我的setResult(RESULT_OK,意圖),發生Android:失敗的傳遞結果ResultInfo
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.hackingtrace.vancexu/com.hackingtrace.vancexu.task.B}: java.lang.NullPointerException
在B,I由
setTimeButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(view.getContext(), TaskTimeSet.class);
i.putExtra(TasksDbAdapter.KEY_ROWID, mRowId);
Calendar c = Calendar.getInstance();
Date d = c.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String now = sdf.format(d);
i.putExtra("date", now);
startActivityForResult(i, ACTIVITY_EDIT_TIME);
}
和用C開始C,I的setResult通過
confirmBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("date", resultDate);
int h = timePicker.getCurrentHour();
int m = timePicker.getCurrentMinute();
String time = "" +h+":"+m;
Log.d(TAG, time);
intent.putExtra("time", time);
setResult(RESULT_OK, intent);
finish();
}
});
然後在BI接收由
結果protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
Log.d(TAG, "I am in " + requestCode + resultCode);
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == ACTIVITY_EDIT_TIME) {
if (resultCode == RESULT_OK) {
Log.d(TAG, "OK time set");
String[] dateArr = intent.getStringExtra("date").split("-");
String[] timeArr = intent.getStringExtra("time").split(":");
int year = Integer.parseInt(dateArr[0]);
int month = Integer.parseInt(dateArr[1]);
int day = Integer.parseInt(dateArr[2]);
int hour = Integer.parseInt(timeArr[0]);
int minute = Integer.parseInt(timeArr[1]);
Log.d(TAG, ""+year+month+day+hour+minute);
}
}
}
但我從來沒有得到「Log.d(TAG,」「+ year + month + day + hour + minute);」正常運行。
我曾嘗試:
1:
if (getParent() == null) {
setResult(Activity.RESULT_OK, intent);
}
else {
getParent().setResult(Activity.RESULT_OK, intent);
}
不工作:(
2:
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
錯誤 「了java.lang.RuntimeException」 沒有出現,但requestCode和resultCode始終爲0
感謝您的任何提示
vancexu
感謝您的幫助。是的,「它不會打電話給B的onCreate」我已證明。但是我能做些什麼來解決我的問題?我在模擬器中找到了「開發工具」應用程序,但未找到「不要保留活動」選項。 – vancexu 2012-03-22 16:12:07
根據Android版本的不同,它可能會有所不同。在2.3.3下,它是開發工具>開發設置>「立即銷燬活動」。確保它沒有被選中。如果'onCreate'沒有被調用,那麼Activity B不會被銷燬。 – 2012-03-22 16:50:09
感謝您的收看,Brian。 – vancexu 2012-03-23 02:25:08