当前位置: 首页 > 知识库问答 >
问题:

startActivityForResult()返回结果代码RESULT_CANCELED

李光华
2023-03-14

我有两个活动,我在第二个活动上启动一个Intent以使用start ActivityForResult(...)检索结果,然后使用onActivityResult(...)处理结果。

问题是结果从第二个活动返回的代码始终RESULT_CANCELED。因此,不要通过条件的“resultCode == RESULT_OK”,在我的Main Acitivty中更新textView。

主要活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Intent chooseIntent = new Intent(this,ChooseActivity.class);
    Button startIntent = findViewById(R.id.button);

    startIntent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivityForResult(chooseIntent,1);
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    TextView textView = findViewById(R.id.choiceResultView);
    if (requestCode == 1) {
        textView.setText("Resultcode "+resultCode);
        if (resultCode == RESULT_OK) {
            String returnedResult = data.getStringExtra("choice");
            textView.setText(returnedResult);
        }
    }
}

第二项活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_choose);

    Button lockChoice = findViewById(R.id.choose);
    RadioGroup selection = findViewById(R.id.selection);
    final RadioButton selected = (RadioButton) findViewById(selection.getCheckedRadioButtonId());

    lockChoice.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent choice = new Intent();
            choice.putExtra("choice",selected.toString());
            setResult(RESULT_OK,choice);
            finish();
        }
    });

}

共有1个答案

章阳波
2023-03-14

尝试使用传递的意图,而不是创建一个新的意图:

Bundle extras = new Bundle();
extras.putString("choice", selected.toString());

Intent intent = getActivity().getIntent();
intent.putExtras(extras);

getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();

没有其他看起来错误的东西。

 类似资料:
  • 我有两个活动类和一个非活动类,它们从构造函数中传递的上下文调用startActivityForResult()。它看起来是这样的:FirstActivity- 不活跃 第二活动 第一活动

  • 我使用GATE API和java代码,并试图对文档文本运行一个已知的JAPE规则,但不幸的是,我无法得到适当的结果。我的代码如下:

  • 我有一个活动,我正在添加片段。有一个片段(WhenFragment),我在其上添加另一个片段(DateSelectionFragment)来获取日期,当我按back时,我需要该日期并希望在文本视图中设置。我为此使用了OnFragmentInteractionListener,它正确返回WhenFragment的结果。但我无法在OnFragmentInteractionListener实现中访问Te

  • 问题内容: 我正在尝试创建一种方法,从中可以查询数据库并检索整个表。 目前,如果我使用这些数据只是正常工作 中 的方法。但是,我希望该方法返回结果。 我正在了解当前代码。 我该如何实现? 问题答案: 您永远不要通过公共方法来回避。这很容易导致资源泄漏,因为您不得不保持语句和连接打开。关闭它们将隐式关闭结果集。但是,将它们保持打开状态将导致它们悬而未决,并且当它们打开过多时,将导致数据库用尽资源。

  • 我有一个简单的代码,可以从第14列开始将转置的范围复制到另一张表的最后一行 它按原样返回零结果。如果我将destrow从公式更改为simple 2(这是现在最后一个空行),则效果很好。为什么不返回目标工作表中的最后一行索引?

  • 我正在尝试处理新的AndroidLollipopMediaProjection API。 我发现(至少在我的股票三星Galaxy S4 jfltexx上),当我开始意图获取捕获屏幕的权限()时,除非我在前面的尝试中选中了“不要再次询问”,否则在中不会有结果... 和结果处理: 权限对话框显示得很好,但是我的活动被隐藏了,它永远不会转到。 知道出什么问题了吗?