[英]android - onActivityResult not called
我從Activity ViewRecordsActivity
調用Activity AddRecordActivity
。 兩者都擴展了AppCompatActivity
。
我稱AddRecordActivity
為,
startActivityForResult(intent, Constants.MY_REQUEST_CODE);
在AddRecordActivity
,添加記錄后調用以下代碼:
Intent intent = new Intent(AddRecordActivity.this, ViewRecordsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(Constants.EXTRA_OPERATION_SUCCESS_TEXT, "Record added");
setResult(RESULT_OK, intent);
startActivity(intent);
finish();
在ViewRecordsActivity
,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case Constants.MY_REQUEST_CODE: {
Toast.makeText(this, data.getStringExtra(Constants.EXTRA_OPERATION_SUCCESS_TEXT), Toast.LENGTH_SHORT).show();
}
break;
}
}
}
我不明白為什么事件onActivityResult
沒有被觸發?
這是因為您正在使用startActivity(intent);
重新啟動它startActivity(intent);
。 擺脫它。 調用setResult(RESULT_OK, intent);
和finish();
只要
擺脫
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
&
startActivity(intent)
考慮到活動處於標准啟動模式(如果未使用CLEAR_TOP標志,則后者會導致活動再次實例化。否則,該意圖將通過onNewIntent()傳遞)。 因此,該活動的新實例永遠不會知道您從該活動的另一個實例調用了startActivityForResult()
。 您需要做的就是,通過在finish()之前調用finish()
和setResult()
來退出當前活動,以獲得所需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.