迁移至registerForActivityResult并使用FileProvider时触发InstantiationException
问题:迁移至registerForActivityResult时应用崩溃,抛出无参构造函数异常
原有代码
private void OpenGallery(){ Intent galleryIntent = new Intent(); galleryIntent.setAction(Intent.ACTION_GET_CONTENT); galleryIntent.setType("image/*"); startActivityForResult(galleryIntent, GalleryPick);// 标记为已废弃 } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==GalleryPick && resultCode==RESULT_OK && data!=null) { ImageUri = data.getData(); InputProductImage.setImageURI(ImageUri); } }
崩溃异常
exception:java.lang.InstantiationException: java.lang.Class<com.firmvision.waste2wealth.AdminAddNewProductActivity> has no zero argument constructor
解决方案
1. 正确迁移至registerForActivityResult
在Activity中初始化ActivityResultLauncher,替换原有的startActivityForResult调用:
// 全局声明Launcher private ActivityResultLauncher<Intent> galleryLauncher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_activity_layout); // 初始化相册选择的Launcher galleryLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { // 处理返回结果,逻辑和原onActivityResult一致 if (result.getResultCode() == RESULT_OK && result.getData() != null) { Uri imageUri = result.getData().getData(); InputProductImage.setImageURI(imageUri); } }); } // 修改OpenGallery方法 private void OpenGallery(){ Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); galleryIntent.setType("image/*"); galleryLauncher.launch(galleryIntent); }
2. 修复无参构造函数异常
确保AdminAddNewProductActivity存在公共无参构造函数。如果之前定义了带参数的构造函数,系统默认无参构造会被覆盖,需手动添加:
public class AdminAddNewProductActivity extends AppCompatActivity { // 手动添加无参构造函数 public AdminAddNewProductActivity() { // 空实现即可 } // 其他业务代码... }
原因说明
系统在配置变更(如屏幕旋转)、进程重启等场景下会重新创建Activity,此时必须通过无参构造函数完成实例化。如果Activity没有无参构造,系统无法生成实例,就会抛出InstantiationException。同时registerForActivityResult的回调依赖Activity的正常实例化,因此必须先修复构造函数问题。
内容的提问来源于stack exchange,提问作者Firmvision
相关产品推荐
相关产品推荐

