Пикассо с указанием пути ошибки не должен быть пустым? - PullRequest
2 голосов
/ 31 марта 2019

Я пытаюсь получить изображение из базы данных.поэтому, когда в 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, тогда логотип приложения автоматически перейдет в режим просмотра изображений.

Ответы [ 3 ]

0 голосов
/ 31 марта 2019

вы можете попробовать так:

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);
        }
}
0 голосов
/ 31 марта 2019

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();
                }
            });
0 голосов
/ 31 марта 2019

Вы можете попробовать код ниже. Если это не поможет, дайте мне знать немного больше о 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);
    }
}
...