2016-01-23 21 views
0

這裏是我的MainActivity.java如何將圖像設置爲圖庫中的圖像?請告訴我如何實現它?由於提前

public class MainActivity extends AppCompatActivity { 

int PICK_IMAGE_REQUEST=1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button btn= (Button) findViewById(R.id.btnImgGet); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 

      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 

      startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
     } 
    }); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode==RESULT_OK){ 

     if(requestCode==PICK_IMAGE_REQUEST && null != data) 
     { 
      //Toast.makeText(getApplicationContext(),"onActivityResult working",Toast.LENGTH_SHORT).show(); 
      try { 
       Uri uri = data.getData(); 
       String[] projection = {MediaStore.Images.Media.DATA}; 

      Cursor cursor = getContentResolver().query(uri,projection,null,null,null); 
       cursor.moveToFirst(); 
      int column_index=cursor.getColumnIndex(projection[0]); 

       String path = getString(column_index); 
       cursor.close(); 
      // Log.d("Image Path is->",path); 
       ImageView imageView = (ImageView) findViewById(R.id.imgView); 
       imageView.setImageBitmap(BitmapFactory.decodeFile(path)); 
      }catch (NullPointerException ex){ex.printStackTrace();} 

     } 

    } 


} 

} 

這裏是logcat的..

01-23 18:13:41.767 7528-7528/com.example.manpreetsingh.gridviewimages W/ResourceType: No package identifier when getting value for resource number 0x00000000 
01-23 18:13:41.778 7528-7528/com.example.manpreetsingh.gridviewimages D/AndroidRuntime: Shutting down VM 
01-23 18:13:41.834 7528-7528/com.example.manpreetsingh.gridviewimages E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.manpreetsingh.gridviewimages, PID: 7528 
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:21776 flg=0x1 }} to activity {com.example.manpreetsingh.gridviewimages/com.example.manpreetsingh.gridviewimages.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x0 
     at android.app.ActivityThread.deliverResults(ActivityThread.java:3659) 
     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702) 
     at android.app.ActivityThread.access$1300(ActivityThread.java:155) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5343) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
    Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0 
     at android.content.res.Resources.getText(Resources.java:299) 
     at android.content.res.Resources.getString(Resources.java:385) 
     at android.content.Context.getString(Context.java:377) 
     at com.example.manpreetsingh.gridviewimages.MainActivity.onActivityResult(MainActivity.java:68) 
     at android.app.Activity.dispatchActivityResult(Activity.java:6218) 
     at android.app.ActivityThread.deliverResults(ActivityThread.java:3655) 
     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702) 
     at android.app.ActivityThread.access$1300(ActivityThread.java:155) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5343) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
01-23 18:13:44.494 7528-7528/? I/Process: Sending signal. PID: 7528 SIG: 9 

回答

0

在這裏你有多個問題。

在戰術上,您撥上的getString(),而不是Cursor,這將不起作用。

除此之外,onActivityResult()中的幾乎所有內容都不正確。您得到的Uri不一定在MediaStore,而MediaStore不必爲您提供可讀的路徑。

請使用an image loading library,像Picasso,採取Uri並把圖像中的ImageView

如果您堅持自己這樣做,請分叉後臺線程,並在ContentResolver上使用getInputStream(),並將該流傳遞給BitmapFactory上的decodeStream()

相關問題