将图片URI从一个活动传递到其他活动,以在第二个活动的图像视图中显示来自图库的选定图像

问题描述:

我的MainActivity.java文件包含从应用程序从图库中的图像通过共享按钮开始之后开始的位置的以下内容。将图片URI从一个活动传递到其他活动,以在第二个活动的图像视图中显示来自图库的选定图像

Intent intent = new Intent(MainActivity.this,BoardView.class); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
intent.putExtra("image", path); 
startActivity(intent); 

我命名为BoardView次活动接受图像:

Intent ii = getIntent(); 
Bundle b = ii.getExtras(); 
if(b!= null) { 
    String image = ii.getStringExtra("image"); 
    view_news.setVisibility(View.VISIBLE); 
} 

,但我不是在第二个活动让我的形象。 其实第一个活动是登录,第二个活动显示登录后的图像。

编辑: logcat的显示错误

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chawlaz.cubetboard/com.example.chawlaz.cubetboard.BoardView}: java.lang.NullPointerException: uriString 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException: uriString 
     at android.net.Uri$StringUri.<init>(Uri.java:467) 
     at android.net.Uri$StringUri.<init>(Uri.java:457) 
     at android.net.Uri.parse(Uri.java:429) 
     at com.example.chawlaz.cubetboard.BoardView.onCreate(BoardView.java:156) 
     at android.app.Activity.performCreate(Activity.java:5231) 


    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
        at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                 at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:136) 
                  

    at android.app.ActivityThread.main(ActivityThread.java:5001) 
                  at java.lang.reflect.Method.invokeNative(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:515) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                  at dalvik.system.NativeStart.main(Native Method) 
+0

你的意思是图像为null? – starkshang

+0

我的意思是图像没有被观看到我的图像视图 –

+0

从你的错误日志中,我们可以看到你得到的图像是空的 – starkshang

使用ImageView.setImageURI中的ImageView使用Uri显示图像:

String image = ii.getStringExtra("image"); 
view_news.setVisibility(View.VISIBLE); 
Uri imgUri=Uri.parse(image);// << get URI from String 
view_news.setImageURI(imgUri); 
+0

它在运行时显示错误,空指针异常 –

+0

@ chawla.19:显示完整的崩溃日志 –

+0

我已经发布了上面的错误日志,看看 –

声明全局静态变量

public static final String IMAGE_URL = "imageURL"; 

Intent intent = new Intent(MainActivity.this,BoardView.class); 
intent.setType("image/*"); 
intent.putExtra(IMAGE_URL, path); 
startActivity(intent); 

而在另一类

Intent ii = getIntent(); 
Bundle b = ii.getExtras(); 
if(b!= null) { 
    String image = ii.getParcelableExtra(MainActivity.IMAGE_URL); 
    view_news.setVisibility(View.VISIBLE); 
} 

希望这将帮助你

+0

您的代码只是将额外的密钥更改为静态,没有任何帮助解决此问题。 – starkshang

+0

正在运行,但Imageview中未显示图像。 –

+0

@Muralikrishna我不认为静态会有所帮助。 –