【问题标题】:Android onActivityResult() not firingAndroid onActivityResult()没有触发
【发布时间】:2020-12-28 08:39:54
【问题描述】:

我知道有很多与此类似的问题,但其中提到的解决方案都不适合我,我不太确定为什么。

我有以下设置:

MainActivity.java启动:

Button b = findViewById(R.id.btn_b);
b.setOnClickListener(new View.onClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, Activity2.class);
        startActivityForResult(intent, 0);
    }
});

Activity2.java返回值:

@Override
public onBackPressed() {
    System.out.println("Here"); // this can be seen in the logcat
    Intent retIntent = new Intent();
    // putExtra some return values
    setResult(RESULT_OK, retIntent);
    finish();
}

MainActivity.java接收回数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    System.out.println("Returning"); // this doesn't fire at all

    if (data != null) { // I know there will be no other activities, and I want to act on whatever result I get
        // extract and do something with data
    }
}

我真的不明白这里发生了什么。有人可以帮忙解释一下,以及如何解决吗?如果需要,我很乐意提供更多信息。

感谢您的宝贵时间。

【问题讨论】:

  • 你没有说出问题所在。

标签: java android android-activity


【解决方案1】:

MainActivity.java 中的这一行更改为

startActivityForResult(intent, 1);

然后在方法onBackPressed()这样调用方法setResult

setResult(RESULT_OK);

然后在onActivityResult方法中写下这个条件。

if (resultCode == Activity.RESULT_OK) {//place your logic here}

如果这对你有用,请告诉我。

【讨论】:

  • 天哪,这太尴尬了……我的意图是错误的(我在其他地方声明过)!虽然您的答案不是确切的解决方案,但它确实促使我找到了真正的问题,所以非常感谢您。无论如何我都会接受答案。
  • @404NameNotFound 很高兴能够帮助您。但请随时发布您的解决方案。谢谢。
  • 这只是一个if (condition) { /* start 1 */ } else { /* start 2 */ },我对else 案例进行了更改,但我正在针对if 案例进行测试。不过,您的回答帮助我注意到了这个问题,所以谢谢!
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多