2013-07-02 145 views
0

我使用ImageView从sdcard显示图像时遇到问题。我尝试了很多代码,下面是这些代码,但没有人为我工作,知道该活动运行时没有任何问题“成功”,但屏幕始终为空,并且不显示图像。任何想法。提前致谢。ImageView不显示来自特定文件夹的图像

activity_mainvie.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".IMAGEVIE" > 

    <ImageView 
     android:id="@+id/imageview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="center"/> 
</RelativeLayout> 

代码试图的主要活动是:

public class IMAGEVIE extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imagevie); 
     ImageView iv=(ImageView) findViewById(R.id.imageview); 

     Bitmap bMap = BitmapFactory.decodeFile("/sdcard/life.jpg"); 
     iv.setImageBitmap(bMap); 
    } 
} 

第二个代码:

public class IMAGEVIE extends Activity { 

    private File mFichier; 
    private Uri fileUri; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imagevie); 
     ImageView iv=(ImageView) findViewById(R.id.imageview); 
     File f= new File("/sdcard/life.jpg"); 
     Bitmap bMap = BitmapFactory.decodeFile(f.getAbsolutePath()); 
     iv.setImageBitmap(bMap); 
    } 
} 

第三代码:

public class IMAGEVIE extends Activity { 

    private File mFichier; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imagevie); 
     ImageView iv=(ImageView) findViewById(R.id.imageview); 
     mFichier = new File(Environment.getExternalStorageDirectory(),"life.jpg"); 

     if(mFichier.exists()) 
     { 
      iv.setImageURI(Uri.fromFile(mFichier)); 
     } 
    } 
} 
+0

该文件是否存在? – Blackbelt

+0

是的,它是存在的。当我使用GridView时,我遇到了同样的问题。总是一个空的屏幕没有错误。 – sinimm

回答

1

你到SD卡路径错了,它应该是这样的:

File f= new File("/mnt/sdcard/life.jpg"); 
+0

嗨,同样的问题仍然存在,当我改变路径。 – sinimm

+0

你有MANIFEST.XML这个权限吗? <使用权限android:name =“android.permission.WRITE_EXTERNAL_STORAGE”/> – user1283633

+0

+1好分享@ user1283633 –

0

设置你的内容以R.layout.activity_main

+0

感谢您的回复。我犯了错误,它不是activity_main.xml,而是activity_mainvie.xml“布局文件夹中xml文件的名称”。所以代码仍然是一样的没有改变! – sinimm

1

第一:要保存你的XML文件作为activity_main.xml中

所以更改的setContentView到: -

的setContentView(R.layout 。 activity_main);

在您的Java文件!

试试这个:

File f = new File(strImgPath); 
     if (f.exists()) { 
      Drawable d = Drawable.createFromPath(strImgPath); 
      iv.setImageDrawable(d); 

     } 

它的工作对我来说

其中strImgPath可变一个字符串,其中包含您图像的路径!

,并检查具有u加在你的AndroidManifest.xml文件的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

感谢您的回复;它完成了,但它也不起作用!我不明白问题在哪里! – sinimm

+0

您是否尝试更改setContentView(R.layout.activity_imagevie); setContentView(R.layout.activity_main); –

+0

不,我没有,因为布局的Xml文件被命名为activity_imagevie.xml我不明白为什么我应该重命名它?你能向我解释一下吗?提前致谢。 – sinimm

0

首先保存图像:

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
String sdCard = Environment.getExternalStorageDirectory().toString(); File myDir = new File(sdCard + "/folder");
myDir.mkdir();
FSApi.snapPic(myDir+"/img");
}

然后打开它:

  File folder = new File(Environment.getExternalStorageDirectory().getPath()+"/folder/"); 
      allFiles = folder.listFiles(); 
      if (allFiles == null) { 

       AlertDialog alertDialog = new AlertDialog.Builder(Activity.this).create(); 
       alertDialog.setTitle("Alert"); 
       alertDialog.setMessage("No such a file/directory"); 
       alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
       } 
      }); 
       alertDialog.show(); 

      } 
      // Folder is empty 
      else if (allFiles.length == 0) { 

       AlertDialog alertDialog = new AlertDialog.Builder(Activity.this).create(); 
       alertDialog.setTitle("Alert"); 
       alertDialog.setMessage("No snapshot to display"); 
       alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
       } 
      }); 
       alertDialog.show(); 

      } 
      // Folder contains files 
      else { 
       new SingleMediaScanner(Activity.this, allFiles[0]); 
      } 
     } 


public class SingleMediaScanner implements MediaScannerConnectionClient { 

    private MediaScannerConnection mMs; 
    private File mFile; 

    public SingleMediaScanner(Context context, File f) { 
     mFile = f; 
     mMs = new MediaScannerConnection(context, this); 
     mMs.connect(); 
    } 

    public void onMediaScannerConnected() { 
     mMs.scanFile(mFile.getAbsolutePath(), null); 
    } 

    public void onScanCompleted(String path, Uri uri) { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(uri); 
     startActivity(intent); 
     mMs.disconnect(); 
    } 
} 
+0

只需对第一个代码进行一些更改.. 就是这样。 – ramkumar5035