startActivityForResult();这个方法主要用于两个Activity交互的场景。
QuestionDetailActivity.this调到QuestionReportActivity.class
Intent intent = new Intent(QuestionDetailActivity.this,QuestionReportActivity .class); intent.putExtra(CommonConstants.QUES_ID,quesId); startActivityForResult(intent,REPORT_REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
if(data != null){
}
if(resultCode == RESULT_OK){ ((OnTabActivityResultListener)myActivity).onTabResume(); }
data 如果用来取值,一定要判断是否为空,并且要要判断 是否要真的做一些业务操作,如用不到data,还可以根据resultCode值来确定是否要做处理,
如果是后者Activity单纯的back返回的话,理论上应该不用做任何处理,所有就要进行判断,不要引起不必要的消耗和异常。
(可以根据requestCode,或者resultCode进行业务返回区分)
}
QuestionReportActivity中的返回代码。
Intent intent = new Intent(); intent.putExtra(CommonConstants.REPORT_ID,reportId);
//setResult一定要在finish之前,并且要处理默认按键返回。按键返回默认会调用setResult(Activity.RESULT_CANCELED); setResult(Activity.RESULT_OK,intent); Util.closeKeyboard(context, mEtReason); finish();