Android 始终获取结果\u取消活动结果
在我的项目中,我的活动A有一个列表。我在BindViewHolder的列表适配器中设置onClickListener,通过单击每个项目,活动B启动startActivityforResult。然后在活动B中设置ResultResult_OK 但在活动中,总是得到结果 这是我的适配器代码: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
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我做到了,但我的问题没有得到解决。目的是提供可选的额外数据,这不是必需的,我想这可能是您正在拨打的“完成”电话