显示错误路径的毕加索一定不能为空?

时间:2019-03-31 13:12:57

标签: java android xml android-layout picasso

我正在尝试从Firebase获取图像。所以当firebase中没有图像时,我希望将应用程序徽标设置在那里。但是我的应用崩溃了,并且将错误扔到了日志猫中。

我尝试使用if-else条件。以及成功和错误方法。但效果不佳。

private static final String Earnings_Freebies = "EARNINGS_FREEBIES";

    private Earnings_Freebies list;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.earnings_freebies);

list = (Earnings_Freebies) getIntent().getExtras().getSerializable(Earnings_Freebies);

        if (TextUtils.isEmpty(list.getmImageView())){
            m_EF_ImageView.setImageResource(R.drawable.app_logo);
            mProgressBarEF.setVisibility(View.GONE);
        }

        Picasso.with(getApplicationContext())
                .load(list.getmImageView())
                .into(m_EF_ImageView, new Callback() {
                    @Override
                    public void onSuccess() {
                        mProgressBarEF.setVisibility(View.GONE);
                        mFailedImage.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError() {
                        mProgressBarEF.setVisibility(View.GONE);
                        mFailedImage.setVisibility(View.VISIBLE);

                    }
                });

有错误时我要。或我忘记将图像放入Firebase中,那么应用程序徽标将自动设置为Image-view。

3 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。如果没有帮助,请让我进一步了解 Earnings_Freebies 模型。

确保您使用的是毕加索的最新依赖项。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.earnings_freebies);

    list = (Earnings_Freebies) getIntent().getExtras().getSerializable(Earnings_Freebies);

    if (list == null && TextUtils.isEmpty(list.getmImageView())){
        m_EF_ImageView.setImageResource(R.drawable.app_logo);
        mProgressBarEF.setVisibility(View.GONE);

        Picasso.with(getApplicationContext())
                .load(R.mipmap.ic_launcher) // can also be a drawable
                .into(m_EF_ImageView);
    } else {
        Picasso.with(getApplicationContext())
                .load(list.getmImageView())
                .placeholder(R.mipmap.ic_launcher) // can also be a drawable
                .into(m_EF_ImageView);
    }
}

答案 1 :(得分:0)

您可以尝试这种方式:

private static final String Earnings_Freebies = "EARNINGS_FREEBIES";

    private Earnings_Freebies list;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.earnings_freebies);

        list = (Earnings_Freebies) getIntent().getExtras().getSerializable(Earnings_Freebies);

        if (list != null && list.getmImageView() != null && !TextUtils.isEmpty(list.getmImageView())){
            Picasso.with(getApplicationContext())
                .load(list.getmImageView())
                .into(m_EF_ImageView, new Callback() {
                    @Override
                    public void onSuccess() {
                        mProgressBarEF.setVisibility(View.GONE);
                        mFailedImage.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError() {
                        mProgressBarEF.setVisibility(View.GONE);
                        mFailedImage.setVisibility(View.VISIBLE);

                    }
                });
        }else{
              Picasso.with(getApplicationContext())
                .load(R.drawable.app_logo)
                .placeholder(R.drawable.app_logo)
                .into(m_EF_ImageView);
        }
}

答案 2 :(得分:0)

1)Picasso支持下载和错误占位符作为可选功能。

2)如果图像加载失败,将使用一个可绘制的错误。在这种情况下,临时占位符图像将替换为.error()方法中的错误可绘制对象,在出现错误的情况下,您可以在其中显示应用程序的图标图像。

  Picasso.with(this).load("https://someImageURL")
                  .error(R.mipmap.ic_launcher) // Your app's icon image displayed on error
                  .placeholder(R.drawable.user_placeholder) // some placeholder image
                  .into(imageView, new Callback() {
                @Override
                public void onSuccess() {
                    Log.d("TAG", "onSuccess");
                }

                @Override
                public void onError() {
                    Toast.makeText(getApplicationContext(), "An error occurred", Toast.LENGTH_SHORT).show();
                }
            });