Android onActivityResult() 未触发
Android onActivityResult() not firing
我知道有很多与此类似的问题,但是 none 那里提到的解决方案对我有用,我不太清楚为什么。
我有以下设置:
从 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
}
}
我真的不明白这是怎么回事。有人可以帮忙解释一下吗,如何解决?如果需要,我很乐意提供更多信息。
感谢您的宝贵时间。
将 MainActivity.java
中的这一行更改为
startActivityForResult(intent, 1);
然后在方法onBackPressed()
中像这样调用方法setResult
setResult(RESULT_OK);
然后在onActivityResult
方法中写这个条件。
if (resultCode == Activity.RESULT_OK) {//place your logic here}
如果这对你有用,请告诉我。
我知道有很多与此类似的问题,但是 none 那里提到的解决方案对我有用,我不太清楚为什么。
我有以下设置:
从 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
}
}
我真的不明白这是怎么回事。有人可以帮忙解释一下吗,如何解决?如果需要,我很乐意提供更多信息。
感谢您的宝贵时间。
将 MainActivity.java
中的这一行更改为
startActivityForResult(intent, 1);
然后在方法onBackPressed()
中像这样调用方法setResult
setResult(RESULT_OK);
然后在onActivityResult
方法中写这个条件。
if (resultCode == Activity.RESULT_OK) {//place your logic here}
如果这对你有用,请告诉我。