Android 始终获取结果\u取消活动结果

Android 始终获取结果\u取消活动结果,android,android-recyclerview,startactivityforresult,Android,Android Recyclerview,Startactivityforresult,在我的项目中,我的活动A有一个列表。我在BindViewHolder的列表适配器中设置onClickListener,通过单击每个项目,活动B启动startActivityforResult。然后在活动B中设置ResultResult_OK 但在活动中,总是得到结果 这是我的适配器代码: holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public

在我的项目中,我的活动A有一个列表。我在BindViewHolder的列表适配器中设置onClickListener,通过单击每个项目,活动B启动startActivityforResult。然后在活动B中设置ResultResult_OK 但在活动中,总是得到结果

这是我的适配器代码:

        holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context,TicketActivity.class);
            intent.putExtra("ticketID",tickets.get(position).getId());
            intent.putExtra("ticketStatus",tickets.get(position).getStatus());
            activity.startActivityForResult(intent,NEW_TICKET_MESSAGE_CODE);
        }
    });
这里是我将结果设置为OK时的活动B

    @Override
public void onBackPressed() {
    super.onBackPressed();
    if(hasNewMessage) {
        setResult(RESULT_OK);
        finish();
    }else{
        setResult(RESULT_CANCELED);
    }
    finish();

}
我确信hasNewMessage返回的是真的。 这里是活动B,我检查结果:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == NEW_TICKET_REQUEST) {
        if (resultCode == RESULT_OK) {
            recreate();
        }

    } if (requestCode == NEW_TICKET_MESSAGE_CODE) {
        if (resultCode == RESULT_OK){
            recreate();
        }
    }
}
但是请求代码为NEW\u TICKET\u MESSAGE\u code总是得到结果\u CANCEL 为什么

将super.onBackPressed移除;线

你的方法一定是这样的

@Override
public void onBackPressed() {
    if(hasNewMessage) {
         setResult(RESULT_OK);
         finish();
    }else{
         setResult(RESULT_CANCELED);
         finish();
    }

}

意向=新意向;setResultRESULT_正常,意图;完成我注意到您没有创建意图,然后使用setResult@Eenvincible我做到了,但我的问题没有得到解决。目的是提供可选的额外数据,这不是必需的,我想这可能是您正在拨打的“完成”电话