总是得到 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();
}
}
在我的项目中,我有一个 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();
}
}