我从firebase数据库中检索了图片网址,然后将其传递给下一个活动。下一个活动已收到它但未分配给变量。这是空的。
以下是我使用过的代码:
Activity.java
String url=user.imageURL;
Bundle bundle=new Bundle();
bundle.putString("image", url);
Intent in=new Intent(MapsActivity.this,DisplayAcc.class);
in.putExtras(bundle);
startActivity(in);
Display.java
Bundle bundle = this.getIntent().getExtras();
String key = bundle.getString("image");
URL.setText(key);
Picasso.with(this).load(key).placeholder(R.drawable.camera).error(R.drawable.arrow).fit().into(IMAGE, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
调试Diaplay.java时,我在调试器控制台中得到了这个:
bundle=Bundle[{_fbSourceApplicationHasBeenSet=true, image=https://firebasestorage.googleapis.com/v0/b/database-6c62b.appspot.com/o/Accident%2FAccident907.jpg?alt=media&token=dfd78176-9f57-4e55-afca-da5e352d5507}]
key=null
URL=null
因此我收到错误
" java.lang.IllegalArgumentException:Target不能为null"为毕加索
OR
"尝试调用虚方法void android.widget.TextView.setText(java.lang.CharSequence中)'在null 对象参考" for TextView(URL)。
请帮帮我。
答案 0 :(得分:2)
确保您没有从Activity.java
或试试这个
从Activity.java
Intent myIntent = new Intent(Activity.this,
Display.class);
myIntent.putExtra("image", url);
startActivity(myIntent);
从Display.java
进行检索Intent myIntent = getIntent();
String url = myIntent.getStringExtra("image");
答案 1 :(得分:1)
这是因为您忘记将视图与之前代码中的ButterKnife
绑定在一起:
public class DisplayAcc extends AppCompatActivity {
@BindView(R.id.image) ImageView IMAGE;
@BindView(R.id.url) TextView URL;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_acc);
// You forgot this
ButterKnife.bind(this);
// ...
}
}