【发布时间】:2020-06-22 15:17:01
【问题描述】:
我有以下代码
public void changeContentOnClick(View view) {
Intent intent = new Intent(this, ChangeNodeContentActivity.class);
intent.putExtra("SELECTED_NODE_ID", selectedNode.getNodeId());
intent.putExtra("SELECTED_NODE_CONTENT", selectedNode.getNodeContent());
startActivityForResult(intent,RESULT_OK);
Log.d(TAG, "Can I get here?");
onActivityResult(RESULT_OK, RESULT_OK, intent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String editedNodeId = data.getStringExtra("EDITED_NODE_ID");
String editedNodeContent = data.getStringExtra("EDITED_NODE_CONTENT");
Node nodeChecker = new Node(editedNodeId);
Node editedNode = new Node(editedNodeId, editedNodeContent);
Log.d(TAG, editedNode.toString());
nodes.set(nodes.indexOf(nodeChecker), editedNode);
adapter.notifyDataSetChanged();
}
} catch (Exception e) {
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
}
不知何故,在调用 startActivityForResult 方法后,一切都停止了。带有消息“我可以到这里吗?”的日志从未印刷过,我不明白为什么不印刷。我已关注this 主题的答案,但不知何故无法使其工作。我是否以错误的方式或位置调用 onActivityResult?请帮帮我!
应该从 ChangeNodeContentActivity 发回一些信息并且处理结果代码的那个是点击监听器上的以下内容:
public void changeContentOnClick(View view) {
Intent intent = getIntent();
selectedNode.setNodeContent(nodeContentDisplay.getText().toString());
intent.putExtra("EDITED_NODE_ID", selectedNode.getNodeId());
intent.putExtra("EDITED_NODE_CONTENT", selectedNode.getNodeContent());
setResult(RESULT_OK, intent);
Log.d(TAG, selectedNode.toString());
finish();
}
【问题讨论】:
-
startActivityForResult(intent,RESULT_OK);那应该是startActivityForResult(intent,REQUEST_CODE);。 -
您自己在调用 onActivityResult()。不要那样做。删除该行。您应该等到新活动关闭/完成时自动调用它。
-
是的,我发现我不应该自己称呼它哈哈。但你的第一条评论成功了。非常感谢您的帮助!
标签: android onactivityresult startactivityforresult