在我的项目中,我有一个包含列表的活动A。我在列表适配器(onBindViewHolder(中设置了onClickListener,通过单击每个项目,活动B正在启动(startActivityforResult RESULT_OK(。 但在活动 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);
}
});
这是我将"结果"设置为"正常"时的活动 B。
@Override
public void onBackPressed() {
super.onBackPressed();
if(hasNewMessage) {
setResult(RESULT_OK);
finish();
}else{
setResult(RESULT_CANCELED);
}
finish();
}
我确定有新消息返回真。 这是我检查结果的活动 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();
}
}