问题遇到的现象和发生背景
ActivityResultLauncher 使用跳转activity时无法收到回传
用代码块功能插入代码,请勿粘贴截图
package com.lanny.navigationdemo;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
public class OneActivity extends AppCompatActivity {
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
TextView tv = findViewById(R.id.tv);
tv.setText("One");
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OneActivity.this,TwoActivity.class);
intent.putExtra("sss","sssss");
// startActivityForResult(intent,1000);
mResultLauncher.launch(intent);
}
});
}
ActivityResultLauncher<Intent> mResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
Log.e(getClass().getSimpleName(),"onActivityResult");
if (result.getData() != null ) {
Log.e(getClass().getSimpleName(),result.getData().getStringExtra("msg")+",resultCode:"+result.getResultCode());
}
}
});
// @Override
// protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
// Log.e(getClass().getSimpleName(),"onActivityResult()");
// }
}
Intent intent = new Intent();
intent.putExtra("msg", getClass().getSimpleName()+"发送finish");
setResult(Activity.RESULT_OK, intent);
finish();
运行结果及报错内容
无法收到回传,但是这两种方式跳转activity使用onActivityResult(int requestCode, int resultCode, @Nullable Intent data)都可以接收到,使用ActivityResultLaunche无法接收到