android - 总是在ActivityResult上获得RESULT_CANCELL,而
问题描述
在我的项目中,我有一个包含列表的活动 A。我在列表适配器(onBindViewHolder)中设置了onClickListener,通过单击每个项目,开始活动B(startActivityforResult)。然后在活动BI setResult(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);
}
});
当我将结果设置为 OK 时,这是活动 B。
@Override
public void onBackPressed() {
super.onBackPressed();
if(hasNewMessage) {
setResult(RESULT_OK);
finish();
}else{
setResult(RESULT_CANCELED);
}
finish();
}
我确定 hasNewMessage 返回 true。这是我检查结果的活动 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();
}
}
推荐阅读
- c++ - 是否可以创建一个在循环中跳过函数的计时器?
- java - gradle 构建访问被拒绝
- spring-boot - 如何将 Flux all 应用于返回 Mono 的谓词
? - javascript - 使用 pdfjs 时无法通过在 viewer.html 文件参数中传递 Uint8Array 来呈现 pdf
- visual-c++ - 从 32 位迁移 C++ 和 Java 64 位挑战
- docker - 就如何使用 Helm 和 Kubernetes 进行个性化服务设置提供建议
- .net - 序列化带有填充标签的 system.drawing.image 列表
- macos - 意外的头文件:
- windbg - 什么在 .net 应用程序中使用大型 mem_reserve?
- django - django 中的自定义身份验证不起作用