エラーメッセージが墜落:、それは
FATAL EXCEPTION: main
Process: com.example.keepair.myapplication, PID: 31796
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=66536, result=0, data=null} to activity {com.example.keepair.myapplication/com.example.keepair.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri android.content.Intent.getData()' on a null object reference
CODE:
mGetImageFromGalleryButton = (Button) view.findViewById(R.id.btn_getgallery);
mGetImageFromGalleryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(ActivityCompat.checkSelfPermission(getActivity(),
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
requestPermissions(
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
2000);
}
else {
startGallery();
}
}
});
private void startGallery() {
Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
cameraIntent.setType("image/*");
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(cameraIntent, 1000);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == Activity.RESULT_OK) {
if(requestCode == 1000){
Uri returnUri = data.getData();
Bitmap bitmapImage = null;
try {
bitmapImage = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), returnUri);
} catch (IOException e) {
e.printStackTrace();
}
mImageview.setImageBitmap(bitmapImage);
}
returnUri = data.getData();
Glide.with(this)
.load(returnUri)
.override(1280, 1280)
.centerCrop()
.crossFade()
.into(mImageview);
}
else { #What is good for this space? }
}
私のコードは、ユーザーがmGetImageFromGalleryButton
をクリックすることをやっていますGalleryFragment
、ユーザーはギャラリーに行って1つの画像を選択してから、その画像のURIと共にGalleryFragment
に戻ることができます。
質問:ユーザーがmGetImageFromGalleryButton
をクリックして、そのギャラリーに行くが、任意の画像を選択し、Androidの戻るボタンをクリックしない場合 、私は上記の言っError message
が起こっています。だから、私はpublic void onActivityResult
のif節を修正する必要があると思う。もし私が正しいと思ったら、何が良いですかelse { #What is good for this space? }
あなたは私を助けてくれますか?
私はそれがウリreturnUri = data.getData(だと思います)。クラッシュを引き起こしている行 – myatmins
@ septemberboy7あなたの助言をありがとう! –
何も選択されていないときに返されるnullデータをキャッチします。良いコードを書いている部分がNULLを扱っています – Eenvincible