由于E/AndroidRuntime:FATAL EXCEPTION:main上的配置文件图片,我的用户编辑配置文件总是崩溃

由于E/AndroidRuntime:FATAL EXCEPTION:main上的配置文件图片,我的用户编辑配置文件总是崩溃,android,google-cloud-firestore,Android,Google Cloud Firestore,我的个人资料编辑课有问题。它总是因为配置文件图片代码而崩溃。 该类允许我对配置文件进行更改,这些更改将保存在Firebase云数据库中。一切都很好,但个人资料图片有点问题。我一直有问题 首先,我调用一个方法,打开图库并将图片加载到用户中 user.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { filecho

我的个人资料编辑课有问题。它总是因为配置文件图片代码而崩溃。 该类允许我对配置文件进行更改,这些更改将保存在Firebase云数据库中。一切都很好,但个人资料图片有点问题。我一直有问题

首先,我调用一个方法,打开图库并将图片加载到用户中

user.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            filechooser();
            //      fileuploader();

            Picasso.get().load(imageurl).into(user);


        }
    });
使用fileuploader、getExtension、filechooser和onActivityResult方法

// uploads and open gallery on device
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
        imageurl = data.getData();
        user.setImageURI(imageurl);

    }

}

private void filechooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, 1);


}

private String getExtension(Uri uri) {
    ContentResolver cr = getContentResolver();
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
    return mimeTypeMap.getExtensionFromMimeType(cr.getType(uri));
}


private void fileuploader() {
    final StorageReference Ref = mStorageRef.child(System.currentTimeMillis() + "," + getExtension(imageurl));
    uploadtask = Ref.putFile(imageurl)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    // Get a URL to the uploaded content
                    Toast.makeText(ProfilBearbeiten.this, "Image Uploaded", Toast.LENGTH_LONG).show();
                    // Get a URL to the uploaded content
                    Ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            // Got the download URL, so write it to the database
                            userId = fAuth.getCurrentUser().getUid();
                            DocumentReference documentReference = fStore.collection("users").document(userId);

                            documentReference.update("Image", uri.toString());
                        }
                    })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception exception) {
                                    // Handle unsuccessful uploads
                                    // ...
                                }
                            }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception exception) {
                            // Handle unsuccessful uploads
                            // ...
                        }
                    });
                }


            });
}

请您的问题添加
致命异常
行之后的完整堆栈跟踪。请添加完整堆栈跟踪;那一整段的红线。你在哪一行代码中得到了那个错误?还请使用@AlexMamoYou回复
onClick()
中的
filechooser()
之后不能立即调用
fileuploader()
。该调用不会暂停代码的执行,因此它会立即继续执行
fileuploader()
,但尚未设置
imageurl
。要使用
imageurl
,您需要等到
onActivityResult()
。基本上,只需将
fileuploader()
调用(可能还有毕加索的东西)移动到
onActivityResult()
,在
if
块中。谢谢,它确实是这样工作的,但我现在遇到了一个新问题,因为文件一直在上载,但当我单击“bestätigen”(确认)时,文件又被删除了。我刚刚解决了,谢谢你的帮助
bestätigen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // get Information from Edit Text or fileuploader()
            final String eemail = email.getText().toString().trim();
            final String efullname = fullName.getText().toString();
            final String eort = ort.getText().toString();
            final String einteresssen = interessen.getText().toString();
            final String ebeschreibung = beschreibung.getText().toString();
            final String etelefonnummer = telefonummer.getText().toString();
            final String bild = "";
            final String image = imageurl != null ? imageurl.toString() : null;


            userId = fAuth.getCurrentUser().getUid();
            DocumentReference documentReference = fStore.collection("users").document(userId);

            //save edited Information in Database

            Map<String, Object> user = new HashMap<>();
            user.put("Benutername", efullname);
            user.put("EMail", eemail);
            user.put("Ort", eort);
            user.put("Interessen", einteresssen);
            user.put("Beschreibung", ebeschreibung);
            user.put("Telefonnummer", etelefonnummer);

            documentReference.set(user);


            Intent intent = new Intent(ProfilBearbeiten.this, Profile.class);
            startActivity(intent);
            fileuploader();
        }
    });
 E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.mind.simplelogin, PID: 9013
 java.lang.NullPointerException: url
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:133)
        at android.content.ContentResolver.getType(ContentResolver.java:716)
        at com.mind.simplelogin.ProfilBearbeiten.getExtension(ProfilBearbeiten.java:190)
        at com.mind.simplelogin.ProfilBearbeiten.fileuploader(ProfilBearbeiten.java:195)
        at com.mind.simplelogin.ProfilBearbeiten.access$100(ProfilBearbeiten.java:57)
        at com.mind.simplelogin.ProfilBearbeiten$2.onClick(ProfilBearbeiten.java:143)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)