Android “抽象方法”;void com.squareup.picasso.Callback.onError(java.lang.Exception)

Android “抽象方法”;void com.squareup.picasso.Callback.onError(java.lang.Exception),android,callback,adapter,picasso,onerror,Android,Callback,Adapter,Picasso,Onerror,我是新的DevLoper,我想用毕加索从FirebaseDatabase加载图像。但我得到了这个错误 抽象方法“void com.squareup.picasso.Callback.onError(java.lang.Exception) 我不明白它是什么意思。因为我正在使用已经回调的方法。这是我的适配器 private void myAdapter() { Query query = FirebaseDatabase.getInstance()

我是新的DevLoper,我想用毕加索从FirebaseDatabase加载图像。但我得到了这个错误

抽象方法“void com.squareup.picasso.Callback.onError(java.lang.Exception)

我不明白它是什么意思。因为我正在使用已经回调的方法。这是我的适配器

 private void myAdapter() {
        Query query = FirebaseDatabase.getInstance()
                .getReference().child("Category");
        FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>().setQuery(query, Category.class).build();
        adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options) {
            @NonNull
            @Override
            public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.menu_item, parent, false);
                return new MenuViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int position, @NonNull Category model) {
                viewHolder.txtMenuName.setText(model.getName());
                Picasso p = Picasso.get();
                p.load(model.image).tag(this).into(viewHolder.menu_image, new Callback() {
                    @Override
                    public void onSuccess() {
                        Toast.makeText(Home.this, "Welcome", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(Home.this, "Failed", Toast.LENGTH_SHORT).show();
                        e.getMessage();
                    }
                });


                final Category clickItem = model;
                viewHolder.setItemClickListener(new ItemClickListener() {
                    @Override
                    public void onClick(View view, int position, boolean isLongClick) {
                        Toast.makeText(Home.this, "" + clickItem.getName(), Toast.LENGTH_SHORT).show();
                        Intent food_intent = new Intent(Home.this, FoodList.class);
                        //Because categoryId is key , so we just get key of this item
                        food_intent.putExtra(getCategoryId, adapter.getRef(position).getKey());
                        food_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(food_intent);
                    }
                });
            }
        };
      adapter.startListening();
    }

这是我的

我希望这对你有用

试着这样,

Picasso.with(this).load(model.image).resize(400,400).into(viewHolder.menu_image, new Callback() {
            @Override
            public void onSuccess() {

            }

            @Override
            public void onError() {
               // onError Load Default Image.
            }
        });

您的回调工作正常,但无法加载映像。能否告诉我们有关“model.image”的更多信息“。试着用硬编码的URL替换它,你肯定它能工作。

我想是的,它工作得很好。”。我有一个模型,它包括图像URL和名称。我正在从FirebaseDatabase加载。我已经为这个项目工作了一个月。直到最近三天,我一直面临着这个问题。正常情况下,它工作得很好。我将编辑有关模型类的问题,并在再次检查后请检查我是否已手动检查URL在浏览器中是否仍然有效?如果没有,请这样做。或者你最近有没有更新过毕加索的版本?然后你可能想把它改回去,因为正如你在这里看到的,毕加索的一个最新版本似乎在某些设备上导致了这个错误。sir更新了所有url,但出现了相同的错误:(使用毕加索的最新版本。get()不用于以前的版本。我已经检查了您提到的链接,但ı以前见过。让我告诉您在应用程序运行时发生了什么。首先,所有图像都会出现,正如您在Succes方法上看到的,我可以获得Toast消息。“欢迎”。几秒钟后,运行OneError方法并再次获取toast消息,结果“失败!”。和应用程序崩溃!由于链接中描述的问题出现在最新版本上,我建议尝试使用旧版本。回调只能是成功或错误,不能两者都是。由于您使用的是适配器,我猜某些图像无法加载,即,某些URL必须无效或为空。其他两个我不知道,抱歉。
Picasso.with(this).load(model.image).resize(400,400).into(viewHolder.menu_image, new Callback() {
            @Override
            public void onSuccess() {

            }

            @Override
            public void onError() {
               // onError Load Default Image.
            }
        });