onActivityResult 未在 Android 中调用



>我有以下代码

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 方法后,一切都停止了。带有消息"我可以到达这里吗?"的日志从未打印过,我不明白为什么不这样做。我已经遵循了这个主题的答案,但不知何故无法使其工作。我是否以错误的方式或地点调用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()方法接收intentrequestCode,因此应将其更改为:

startActivityForResult(intent, REQUEST_CODE)

并且onActivityResult()从活动返回时会自动调用该方法,因此您应该删除对该方法进行的直接调用,即onActivityResult(RESULT_OK, RESULT_OK, intent)

相关内容

  • 没有找到相关文章

最新更新