【问题标题】:No suitable method found for into(Uri)没有找到适合 into(Uri) 的方法
【发布时间】:2021-06-19 00:02:50
【问题描述】:

我想允许用户上传两张图片,封面和徽标。然后将它们保存在 firestore 中。我收到一个错误 Picasso.get().load(uri).into(Logo);线说

没有找到适合 into(Uri) 的方法 方法 RequestCreator.into(Target) 不适用 (参数不匹配;Uri 无法转换为 Target) 方法 RequestCreator.into(ImageView) 不适用 (参数不匹配;Uri 无法转换为 ImageView)

package com.example.littlemarketplaceapp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;

public class Shop extends AppCompatActivity {

    private ImageButton Logoimage;
    private ImageButton Cover;
    private EditText ShopnameEditText;
    private TextView ShowShopName;
    private Button SaveButton;
    DatabaseReference databaseReference1;
    private FirebaseAuth mAuth;

    StorageReference storageReference = FirebaseStorage.getInstance().getReference();
    StorageReference storageReference1 = FirebaseStorage.getInstance().getReference();
    Uri Logo;
    Uri coverUri;
    private Uri uri;
    int coverOrLogo;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop);
        Intent intent = getIntent();
        String emaila = intent.getExtras().getString("emaili");
        String passworda = intent.getExtras().getString("passwordi");
        String fullnamea = intent.getExtras().getString("fullnamei");
        String usernamea = intent.getExtras().getString("usernamei");
        String mobilea = intent.getExtras().getString("mobilei");
        String Shopname;
        Logoimage = findViewById(R.id.shoplogobutton);
        Cover = findViewById(R.id.coverphotobutton);
        ShowShopName = findViewById(R.id.shopname);
        ShopnameEditText = findViewById(R.id.shopnameedittext);

        Shopname = ShopnameEditText.getText().toString().trim();
        String key = databaseReference1.push().getKey();

        //Saves Owner's Data
        SaveButton.setOnClickListener(v -> {
            ForOwner s_owner = new ForOwner(fullnamea, usernamea, emaila, mobilea, passworda, Shopname);
            databaseReference1.child(key).setValue(s_owner);
            Toast.makeText(getApplicationContext(), "Registration complete", Toast.LENGTH_SHORT).show();


        });
        //Uploads the Logo
        Logoimage.setOnClickListener(view -> {
            //open Gallery
            Intent openGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(openGalleryIntent, 1000);
        });
        //Uploads the Cover photo
        Cover.setOnClickListener(view -> {
            //open Gallery
            Intent openGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(openGalleryIntent, 2000);
        });


    }

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

            Uri imageUri1 = data.getData();
            Logoimage.setImageURI(imageUri1);
            uploadImageToFirebase(imageUri1, 1);
        } else if (requestCode == 2000 && resultCode == Activity.RESULT_OK) {
            Uri imageUri2 = data.getData();
            Cover.setImageURI(imageUri2);
            uploadImageToFirebase(imageUri2, 0);
        }
    }


    //}

    private <final_fileRef> void uploadImageToFirebase(Uri imageUri1, int coverOrLogo) {
        //upload image to firebase
        StorageReference fileRef = null;
        if (coverOrLogo == 1) {
            fileRef = storageReference.child("logo.jpg");
        } else if (coverOrLogo == 0) {
            fileRef = storageReference.child("cover.jpg");
        }

        fileRef.putFile(imageUri1).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                fileRef.putFile(imageUri1).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

                    public void onSuccess(Uri uri) {
                        if (coverOrLogo == 1) {
                            Picasso.get().load(uri).into(Logo);
                        }
                        if (coverOrLogo == 0) {
                            Picasso.get().load(uri).into(Cover);
                        }
                    }

                });
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

                Toast.makeText(Shop.this, "Failed", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

【问题讨论】:

  • 您对这个问题到底有什么不明白的地方? Logo 是 Uri 类型,你不能在那里传递 Uri 的实例

标签: java android firebase firebase-storage


【解决方案1】:

在你的代码中 LogoUri 你需要这个:

Picasso.get().load(uri).into(imageView);

imageView 是布局中的 ImageView 对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2014-08-27
    • 2015-11-26
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多