Picasso "Target must not be null"(使用 Firebase 数据库)
Picasso "Target must not be null" (using Firebase database)
我创建了一个带链接的 Firebase 数据库(这些链接指向我的带有一些图片的存储)
存储:
我尝试连接到我的数据库并获取 Page_1 的值,例如通过按下按钮
private DatabaseReference mRef;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mRef = FirebaseDatabase.getInstance().getReference().child("Chapters").child("Chapter 1").child("Page_1");
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String value = String.valueOf(dataSnapshot.getValue());
textView.setText(value);
Picasso.get().load(value).into(page_holder);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
但是当我 运行 我的应用程序出现异常时,Picasso 行表示:
Target must not be null.
如果我删除我的 picasso 并且只将 Page_1 的值放入 textView 它显示正确的值(所以这意味着我实际上得到我的价值,它不为空)
(抱歉黑色图案,我认为这些行可能包含一些重要的东西,比如数据库名称(很可能不是,但我是这样的菜鸟))
PS
我注意到的一件事是,当我将 Page_1 的值输入 TextView 时,那里有一个 小延迟 。所以我猜 Picasso 试图在加载之前获取 "Target" 。
我试着做一个类似检查器的东西
String value_from_database = textView.getText().toString();
if (TextUtils.isEmpty(value_from_database)){
textView.setText("Image is loading|Doesn't exist");
}
else {
Picasso.get().load(value_from_database).into(page_holder);
}
但我还是失败了。和毕加索一样 exception/error.
请告诉我如何解决?
这意味着 page_holder 为空。
如错误所述:
"Target must not be null."
这意味着在您的情况下,目标是 page_holder
,即 null
。它与您用来从数据库中获取数据的代码无关,这是正确的。
要解决此问题,请确保初始化 page_holder
对象,使其不能 null
并且您可以正确使用 Picasso
。
我创建了一个带链接的 Firebase 数据库(这些链接指向我的带有一些图片的存储)
存储:
我尝试连接到我的数据库并获取 Page_1 的值,例如通过按下按钮
private DatabaseReference mRef;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mRef = FirebaseDatabase.getInstance().getReference().child("Chapters").child("Chapter 1").child("Page_1");
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String value = String.valueOf(dataSnapshot.getValue());
textView.setText(value);
Picasso.get().load(value).into(page_holder);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
但是当我 运行 我的应用程序出现异常时,Picasso 行表示:
Target must not be null.
如果我删除我的 picasso 并且只将 Page_1 的值放入 textView 它显示正确的值(所以这意味着我实际上得到我的价值,它不为空)
(抱歉黑色图案,我认为这些行可能包含一些重要的东西,比如数据库名称(很可能不是,但我是这样的菜鸟))
PS 我注意到的一件事是,当我将 Page_1 的值输入 TextView 时,那里有一个 小延迟 。所以我猜 Picasso 试图在加载之前获取 "Target" 。 我试着做一个类似检查器的东西
String value_from_database = textView.getText().toString();
if (TextUtils.isEmpty(value_from_database)){
textView.setText("Image is loading|Doesn't exist");
}
else {
Picasso.get().load(value_from_database).into(page_holder);
}
但我还是失败了。和毕加索一样 exception/error.
请告诉我如何解决?
这意味着 page_holder 为空。
如错误所述:
"Target must not be null."
这意味着在您的情况下,目标是 page_holder
,即 null
。它与您用来从数据库中获取数据的代码无关,这是正确的。
要解决此问题,请确保初始化 page_holder
对象,使其不能 null
并且您可以正确使用 Picasso
。