【问题标题】:onActivityResult not called in Android在 Android 中未调用 onActivityResult
【发布时间】: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


【解决方案1】:

startActivityForResult() 方法接收到一个intentrequestCode,所以你应该把它改成:

    startActivityForResult(intent, REQUEST_CODE)

并且onActivityResult()方法在activity返回时会自动调用,所以你应该去掉你对该方法的直接调用,即onActivityResult(RESULT_OK, RESULT_OK, intent)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2013-12-02
    • 2012-10-14
    相关资源
    最近更新 更多