图像URL从一个活动传递到另一个活动,但它没有分配给变量

时间:2018-04-20 06:56:33

标签: android android-intent

我从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)。

请帮帮我。

2 个答案:

答案 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);

    // ...
  }
}