onActivPressResult在onBackPressed之后将无法工作

问题描述 投票:0回答:1

我创建了一个具有两个屏幕的应用程序:活动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);,因为我希望它可以清除先前选择的数据,但是它似乎也不怎么好。

[如果我不单击返回按钮就执行了这些操作,则一切正常。

任何原因吗?

谢谢!

java android onactivityresult
1个回答
0
投票

请检查您是否以活动A

© www.soinside.com 2019 - 2024. All rights reserved.