Android-尝试调用虚拟方法';java.lang.String android.net.Uri.getLastPathSegment()';关于空对象引用

Android-尝试调用虚拟方法';java.lang.String android.net.Uri.getLastPathSegment()';关于空对象引用,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在制作一个应用程序,单击照片,然后将其上传到Firebase存储上,但我的代码中出现了nullpointer异常 我也尝试过位图图像,但它没有帮助,因为我仍然得到相同的错误。 下面是我的onActivityResult方法的代码: @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResu

我正在制作一个应用程序,单击照片,然后将其上传到Firebase存储上,但我的代码中出现了
nullpointer
异常

我也尝试过位图图像,但它没有帮助,因为我仍然得到相同的错误。 下面是我的
onActivityResult
方法的代码:

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==CAMERA_REQUEST_CODE&& resultCode==RESULT_OK){

            Uri uri=data.getData();
            StorageReference filepath =mStorage.child("Photos").child(uri.getLastPathSegment());

           filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                 Uri downloadUri = taskSnapshot.getUploadSessionUri();


                    Toast.makeText(MainActivity.this,"upload finished",Toast.LENGTH_LONG).show();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(MainActivity.this, "Sending failed", Toast.LENGTH_SHORT).show();

                }
            });
        }
    }
}
@覆盖
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==CAMERA\u REQUEST\u CODE&&resultCode==RESULT\u OK){
Uri=data.getData();
StorageReference文件路径=mStorage.child(“照片”).child(uri.getLastPathSegment());
filepath.putFile(uri).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Uri downloadUri=taskSnapshot.getUploadSessionUri();
Toast.makeText(MainActivity.this,“上载完成”,Toast.LENGTH_LONG.show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(MainActivity.this,“发送失败”,Toast.LENGTH_SHORT.show();
}
});
}
}
}
我得到的错误是:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.net.Uri.getLastPathSegment()”


@Nullable Intent data
。看起来
数据
为空。可能重复使用调试器(最佳)或添加一些
println()
输出以查看
数据
的情况。具体地说,它看起来像是
data.getData()
返回null,这不是您所期望的。我会深入研究,弄清楚到底发生了什么。