我正在尝试从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。
答案 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();
}
});