簡體   English   中英

遷移 StartActivityForResult 后 onActivityResult 出錯

[英]Error in onActivityResult following migration of StartActivityForResult

我修改了我的代碼,使其適用於活動結果,但是我有一個錯誤,我無法在 profileImageView.setImageURI (ImageUri); 行上更正該錯誤。

他告訴我他需要 Uri 並且它來自 Intent

ActivityResultLauncher<Intent> mGetContent=registerForActivityResult(new 
ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() 
{
@Override
public void onActivityResult(ActivityResult result) {
   if (result.getResultCode()==RESULT_OK && result.getData()!=null){
   Intent ImageUri=result.getData();
       profileImageView.setImageURI(ImageUri);
   }
  }
 });


       public void onClick(View v) {

       Intent galleryIntent = new Intent();
       galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
       galleryIntent.setType("image/*");
   //    startActivityForResult(galleryIntent,GalleryPick);

       mGetContent.launch(galleryIntent);
   }

謝謝你的幫助

請在 onActivityResult() 方法中按如下方式更改您的代碼。

if(result.getResultCode() == Activity.RESULT_OK){
  Intent data = result.getData();
  if(data != null){
    Uri imageUri = data.getData();
     if(imageUri != null){
       try{
         InputStream inputStream = YourActivityName.this.getContentResolver().openInputStream(imageUri);
         BitMap bitMap = BitmapFactory.decodeStream(inputStream);
         profileImageView.setImageBitmap(bitMap);
      }catch(Exception e){
        e.printStackTrace();
      }
    } 
  }
}

而且,您的 OnClick() 方法應如下所示:

  public void onClick(View v) {
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    mGetContent.launch(intent);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM