总是得到 RESULT_CANCELL onActivityResult 而

always getting RESULT_CANCELL onActivityResult while

在我的项目中,我有一个 activity A,它有一个列表。我在列表适配器 (onBindViewHolder) 中设置了 onClickListener,通过单击每个项目,activity B 被启动 (startActivityforResult)。然后在 Activity B I setResult(RESULT_OK) 但在 Activity A 中总是得到 RESULT_CANCELL.

这是我的适配器代码:

        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);
        }
    });

这里是 Activity B 当我设置结果为 OK 时。

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

}

我确定 hasNewMessage returns 是正确的。 这是 Activity 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_TICKET_MESSAGE_CODE 的请求总是得到 RESULT_CANCEL 为什么?!

删除 super.onBackPressed();

你的方法必须像这样

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

}