2013-07-02 6 views
0

У меня проблема, когда я использую ImageView для отображения изображения с SD-карты. Я пробовал много кода, ниже, но никто не работает для меня, зная, что активность работает без каких-либо проблем «успеха», но экран всегда пуст и не отображает изображение. Есть идеи. Заранее спасибо.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

ваш путь к SDCard это неправильно, это должно быть так:

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

Привет, та же проблема сохраняется, когда я меняю путь. – sinimm

+0

У вас есть это разрешение в вашем MANIFEST.XML? 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 является строка переменной, которая содержит путь к своему образу!

, а также проверить есть у добавили разрешение у вас 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

Просто внесите некоторые изменения в первый код .. Thats it. – ramkumar5035

Смежные вопросы