我创建了一个具有两个屏幕的应用程序:活动A(主屏幕)和活动B。
[当用户在活动A中单击搜索按钮时,它将打开一个名为活动B的ListView。
在此ListView中,用户单击了复选框,然后单击完成,将通过使用onActivityResult将结果返回给活动A。
出于某种原因,如果让我说以下话:
1)在活动A中单击了搜索按钮。2)在活动B中选择了1个项目,但未点击完成。相反,我单击了返回按钮。3)重新进入活动B4)选择项目+单击完成
然后我的应用程序崩溃,因为它说结果为空。
似乎在单击返回按钮后,onActivity结果在活动A和活动B之间无效。
我的代码是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == ChatActivity.RESULT_OK){
new CountDownTimer(1000, 500) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
confirmedBooks = (ArrayList<DiscoverBooks>)data.getSerializableExtra("confirmedItems");
DateInMillis = data.getLongExtra( "dateInMillis", System.currentTimeMillis());
}
}.start();
}
if (resultCode == ChatActivity.RESULT_CANCELED) {
}
}
}
和:
Btn_Done.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent confirmedData = new Intent();
confirmedData.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
confirmedData.putExtra( "confirmedItems", (Serializable) itemsSelected );
confirmedData.putExtra( "dateInMillis",DateInMillis );
setResult(ChatActivity.RESULT_OK,confirmedData);
finish();
}
} );
注意:
我添加了行confirmedData.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
,因为我希望它可以清除先前选择的数据,但是它似乎也不怎么好。
[如果我不单击返回按钮就执行了这些操作,则一切正常。
任何原因吗?
谢谢!
请检查您是否以活动A