2011-12-03 9 views
0

私が働いているアプリケーションでsd上のイメージへのパスを取得できません。 私はsetImageDrawableメソッドとsetImageURIメソッドを使用しようとしましたが、どちらも は私のSDカードに画像を表示していないようです。 picpathのデータベースフィールドは文字列 で、私のSDカード上のファイルを指しています。私はスタックトレースでランタイムの標準ランタイム例外 エラーが発生します。コードは以下の通りである:絵にイメージがsqlite dbフィールドから表示されない

public void DisplayAllStudents(){ 

     //File f = new File("/sdcard/studentpics/gntamT.jpg"); 

     DBAdapter db = new DBAdapter(this); 

     db.open(); 

     Cursor c = db.getAllStudents(); 

     if(c.moveToFirst()){ 

      do{ 

       stuID = c.getString(c.getColumnIndex(db.KEY_ROWID)); 
       stuName = c.getString(c.getColumnIndex(db.KEY_STUDENTNAME)); 
       stuDOB = c.getString(c.getColumnIndex(db.KEY_DOB)); 
       stuAddress1 = c.getString(c.getColumnIndex(db.KEY_ADDRESS1)); 
       stuAddress2 = c.getString(c.getColumnIndex(db.KEY_ADDRESS2)); 
       stuTown = c.getString(c.getColumnIndex(db.KEY_TOWN)); 
       stuPostcode = c.getString(c.getColumnIndex(db.KEY_POSTCODE)); 
       stuPhone = c.getString(c.getColumnIndex(db.KEY_PHONE)); 
       stuPicPath = c.getString(c.getColumnIndex(db.KEY_PIC_PATH)); 

       //add database values to ArrayList 
       results.add(" " + Html.fromHtml(stuName.toString() + "<br>" + stuDOB + "<br>" + stuAddress1 + "<br>" + stuAddress2 + "<br>" + stuTown + "<br>" + stuPostcode + "<br>" + stuPhone)); 

       //add fields to our second array list so that we can 
       //pass ALL of the fields to the student details screen 
       dataList.add(stuID.toString() + "," + stuName.toString() + "," + stuDOB.toString() + "," + stuAddress1.toString() + "," + stuAddress2.toString() + "," + stuTown.toString() + "," + stuPhone.toString()); 


       ImageView imgView = (ImageView) findViewById(R.id.studenticon); 
       imgView.setImageDrawable(Drawable.createFromPath(strPathToPic)); 


       //display record 
       //DisplayStudent(c); 
      }while(c.moveToNext()); 
     } 
     //bind data to list view 
     list.setAdapter(new ArrayAdapter<String>(StudentTrackerActivity.this,R.layout.datalayout,R.id.txtFname,results)); 



     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      public void onItemClick(AdapterView<?> parent, View v, int position, 
        long id) { 

       try{ 


       String item = list.getItemAtPosition(position).toString(); 


       Intent intent = new Intent(StudentTrackerActivity.this,StudentDetails.class); 

       //pass values from list view to student details 
       //screen 
       Bundle b = new Bundle(); 
       b.putString("stDetails", item); 

       intent.putExtras(b); 

       startActivity(intent); 


       }catch(IllegalStateException ex){ 

        ex.printStackTrace(); 
       } 

       //Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show(); 





      } 
     }); 

     db.close(); 
    } 

文字列のパス:

strPathToPic = dir.toString() + "/" + txtStudentName.getText().toString().trim() + ".jpg"; 

スタックトレース:

Thread [<3> main] (Suspended (exception RuntimeException)) 
    ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2496 
    ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512 
    ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119 
    ActivityThread$H.handleMessage(Message) line: 1863 
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 4363  
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
    Method.invoke(Object, Object...) line: 521 
    ZygoteInit$MethodAndArgsCaller.run() line: 860 
    ZygoteInit.main(String[]) line: 618 
    NativeStart.main(String[]) line: not available [native method] 

答えて

0

あなたが直接画像を描くので、このメソッドを使用して画像

を描画されていません
Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException 
{ 
    return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), src_name); 
} 
+0

src_name引数に何を入れる必要がありますか? – user615099

+0

@ user615099単純なURL値。 – Newts

0
Bitmap photobitmap = BitmapFactory.decodeFile(strPathToPic); 
imageView.setImageBitmap(photobitmap); 
+0

残念ながら私はあなたのコードを試して、それは動作しませんでした。 – user615099

+0

strPathtoPicを確認すると、ファイルパスではありません。uriファイル –

関連する問題