2014-09-23 55 views
1

在Android應用程序項目的MainActivity java類中,我無法用系統給出的原始圖像替換智能手機的照片庫中選擇的一個不同圖像。在android應用程序的新圖像上替換原始圖像

當我選擇一張不同的照片時,我總是有原始圖像。

public class MainActivity extends Activity implements OnClickListener { 

    Button uploadButton, btnselectpic; 
    ImageView imageview; 
    private ProgressDialog dialog = null; 
    private String imagepath = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     uploadButton = (Button) findViewById(R.id.uploadButton); 
     btnselectpic = (Button) findViewById(R.id.btnselectpic); 
     imageview = (ImageView) findViewById(R.id.imageview); 

     btnselectpic.setOnClickListener(this); 
     uploadButton.setOnClickListener(this); 


    @Override 
    public void onClick(View arg0) { 

       if (arg0 == btnselectpic) { 
      selectImage(); 
     } else if (arg0 == uploadButton) { 
      dialog = ProgressDialog.show(MainActivity.this, "", 
        "Uploading file...", true); 
      messageText.setText("uploading started....."); 
      new Thread(new Runnable() { 
       public void run() { 
       } 
      }).start(); 
     } 
    } 

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

     if (requestCode == 1 && requestCode == 2 && resultCode == RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      imagepath = getPath(selectedImageUri); 
      Bitmap bitmap = BitmapFactory.decodeFile(imagepath); 
      imageview.setImageBitmap(bitmap); 
      messageText.setText("Uploading file path:" + imagepath); 
     } 
    } 

    public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(uri, projection, null, null, 
       null); 
     int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 


    private void selectImage() { 

     final CharSequence[] options = { "Take Photo", "Choose from Gallery", 
       "Cancel" }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
     builder.setTitle("Add Photo!"); 
     builder.setItems(options, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int item) { 
       if (options[item].equals("Take Photo")) { 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        File f = new File(android.os.Environment 
          .getExternalStorageDirectory(), "temp.jpg"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
        startActivityForResult(intent, 1); 
       } else if (options[item].equals("Choose from Gallery")) { 
        Intent intent = new Intent(
          Intent.ACTION_PICK, 
          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        startActivityForResult(intent, 2); 

       } else if (options[item].equals("Cancel")) { 
        dialog.dismiss(); 
       } 
      } 
     }); 
     builder.show(); 
    } 

回答

0

問題是你的onActivityResult()永遠不會做任何事情。

你開始這個方法斷帶:

if (requestCode == 1 && requestCode == 2 && resultCode == RESULT_OK) { 
    // ... 
} 

requestCode不能同時1和2,所以這個條件將總是是假的。

你很可能會尋找更多的東西是這樣的:

if ((requestCode == 1 && resultCode == RESULT_OK) || 
     (requestCode == 2 && resultCode == RESULT_OK)) { 
    // ... 
}