如何在android的图像视图中显示具有固定Uri的图像

如何在android的图像视图中显示具有固定Uri的图像,android,image,android-layout,android-imageview,Android,Image,Android Layout,Android Imageview,我想在线性布局中显示图像及其下方的按钮。对于图像,我使用的是ImageView,两个按钮是嵌套线性布局的一部分 你可能会想,这在网上已经有了。为什么这家伙在浪费我们的时间?这有什么不同 区别在于要显示的图像的Uri是静态的。我在网上看到的大多数代码示例都使用图像选择器来确定图像的Uri。但由于一些限制,我不能使用图像选择器,但可以确保要显示的图像始终具有与Uri相同的固定字符串 下面是我尝试的: activity_main.xml } 如您所见,我尝试加载的图像位于“/sdcard/DCIM/

我想在线性布局中显示图像及其下方的按钮。对于图像,我使用的是ImageView,两个按钮是嵌套线性布局的一部分

你可能会想,这在网上已经有了。为什么这家伙在浪费我们的时间?这有什么不同

区别在于要显示的图像的Uri是静态的。我在网上看到的大多数代码示例都使用图像选择器来确定图像的Uri。但由于一些限制,我不能使用图像选择器,但可以确保要显示的图像始终具有与Uri相同的固定字符串

下面是我尝试的:

activity_main.xml }


如您所见,我尝试加载的图像位于“/sdcard/DCIM/Camera/1.jpg”。但是,这个应用程序一启动就不断崩溃。 所以,请指导我如何解决这个问题。我是Android编程的新手,如果我尝试编写这个应用程序看起来很可怜,请原谅

不用说,提前感谢:)


编辑: 根据@Jonty800的请求,这里是日志级别设置为“Debug”的Logcat的输出:


我们可以看一下坠机报告吗?请记住,您必须提供访问Manifest.xml文件中SD卡的权限,这可能是原因

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

谢谢你的建议,但我已经在清单文件中有了这一行,应用程序仍然崩溃。我已经编辑了问题并添加了Logcat的输出。希望我已提供了您要求的所有信息。您的setContentView似乎位于错误的位置。使用setContentView(R.layout.activity_main)尝试您的代码;在super.onCreate(savedInstanceState)行的正下方;您确定您的映像路径正确吗?也许可以尝试以下操作:String path=Environment.getExternalStorageDirectory()+“/DCIM/Camera/1.jpg”;File imgFile=新文件(路径);如果(imgFile.exists()){Bitmap myBitmap=BitmapFactory.decodeFile(imgFile.getAbsolutePath());ImageView ImageView=(ImageView)findViewById(R.id.ImageView);ImageView.setImageBitmap(myBitmap);}else{System.out.println(“图像不存在”);}aaah,我最终得到了它。您给我的代码示例工作正常,但由于我的图像是3120x4208,它超出了位图大小的4096x4096限制(因此,我得到错误“位图太大,无法上载到纹理(3120x4208,max=4096x4096)”.我试过用较小的图片,效果很好。:D@Jonty800,你对如何处理较大的图片有什么建议吗?
public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String picturePath = "/sdcard/DCIM/Camera/1.jpg";

    ImageView imageView = (ImageView) findViewById(R.id.image_view);
    imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    setContentView(R.layout.activity_main);
}
// Some auto-generated methods here.
07-12 02:07:07.937  23773-23773/? D/dalvikvm﹕ Late-enabling CheckJNI
07-12 02:07:08.037  23773-23773/com.example.debayan.usingimageview D/dalvikvm﹕ GC_FOR_ALLOC freed 108K, 36% free 14480K/22584K, paused 17ms, total 17ms
07-12 02:07:08.137  23773-23773/com.example.debayan.usingimageview I/dalvikvm-heap﹕ Grow heap (frag case) to 66.234MB for 52515856-byte allocation
07-12 02:07:08.517  23773-23773/com.example.debayan.usingimageview D/AndroidRuntime﹕ Shutting down VM
07-12 02:07:08.517  23773-23773/com.example.debayan.usingimageview W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x417bfd58)
07-12 02:07:08.527  23773-23773/com.example.debayan.usingimageview E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.debayan.usingimageview, PID: 23773
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.debayan.usingimageview/com.example.debayan.usingimageview.MainActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2247)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5050)
            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:806)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.debayan.usingimageview.MainActivity.onCreate(MainActivity.java:20)
            at android.app.Activity.performCreate(Activity.java:5248)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2247)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5050)
            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:806)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
            at dalvik.system.NativeStart.main(Native Method)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
String path = Environment.getExternalStorageDirectory()+ "/DCIM/Camera/1.jpg";

File imgFile = new File(path);
if(imgFile.exists())
{
   Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
   ImageView imageView=(ImageView)findViewById(R.id.imageView);
  imageView.setImageBitmap(myBitmap);
}else{
   System.out.println("Image does not exist");
}