如何从另一个活动中获取String?

时间:2017-11-07 08:03:47

标签: android string imageview

我只想在点击然后在另一个活动中显示时,从url加载我的imageview。

这是我的适配器类

    private void openDetailActivity(String name, String propellant, String desc, String imageUrl)
{
    Intent i=new Intent(c, DetailActivity.class);

    //PACK DATA
    i.putExtra("NAME_KEY",name);
    i.putExtra("PROPELLANT_KEY",propellant);
    i.putExtra("DESCRIPTION_KEY",desc);
    i.putExtra("IMAGEURL_KEY",imageUrl);

    c.startActivity(i);
}

然后使用此代码在详细信息中打开

 Intent i=this.getIntent();
String imageurl=i.getExtras().getString("IMAGEURL_KEY");
        touchimg = imageurl;

并且我点击了setonClicklistener,因此图像可以在另一个布局中加载完整大小。 此处代码

            Intent i = new Intent(DetailActivity.this, enlarge.class);
            i.putExtra("IMAGEURL_KEY",touchimg);//PENTING UNTUK AMBIL DATA
            startActivity(i);

最后,这个类下面的catch url图像显示 enlarge.class

String touchimg  = getIntent().getExtras().getString("IMAGEURL_KEY");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_single_touchimageview);
    ImageView imglarge1 = (ImageView) findViewById(R.id.imglarge);
    Picasso.with(this).load(touchimg).placeholder(R.drawable.placeholder).into(imglarge1);

}

我收到此日志消息的错误:

 at dalvik.system.NativeStart.main(Native Method)
                                                                      Caused by: java.lang.NullPointerException
                                                                         at com.newsapp.unair.rizki.enlarge.<init>(enlarge.java:18)
                                                                         at java.lang.Class.newInstanceImpl(Native Method)
                                                                         at java.lang.Class.newInstance(Class.java:1208)
                                                                         at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2116)

我该如何解决?

我用Log.d检查,当我把Log放在下面得到时,意图就像这样

Intent i=this.getIntent();
    String imageurl=i.getExtras().getString("IMAGEURL_KEY");
    touchimg = imageurl;
    if(touchimg != null)
        Log.d("TAG", "tidak null");
    else
        Log.d("TAG", "image null"):

并且Log说“tidak null”或者不是Null,但是如果当Log.d我把它放在onClick上这样:

Intent i = new Intent(DetailActivity.this, enlarge.class);
                i.putExtra("IMAGEURL_KEY",touchimg);
                startActivity(i);
                if(touchimg != null)
                    Log.d("TAGput", "tidak null");
                else
                    Log.d("TAGput", "image null");

日志没有显示任何内容,这是什么意思?

2 个答案:

答案 0 :(得分:2)

试试这个

  • 在您的情况下,在activity2中,在转到activity1之前,您将以这种方式存储String:

    Intent intent = new Intent(activity2.this, activity1.class);
    intent.putExtra("message", message);
    startActivity(intent);
    
  • 得到像这样的值

      Intent i = getIntent();
        if (i.hasExtra("message")){
         String value = i.getStringExtra("message");   
         }
    

答案 1 :(得分:1)

Intent i = new Intent(DetailActivity.this, enlarge.class);
i.putExtra("IMAGEURL_KEY",getIntent().getStringExtra("IMAGEURL_KEY"));//PENTING UNTUK AMBIL DATA
        startActivity(i);

String touchimg  = getIntent().getStringExtra("IMAGEURL_KEY");

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_single_touchimageview);
  ImageView imglarge1 = (ImageView) findViewById(R.id.imglarge);
   Picasso.with(this).load(touchimg).placeholder(R.drawable.placeholder).into(imglarge1);
}

签入enlarge.class。