-1

好的,我有3个ImageViews,当我点击它们时从图库加载图片。将Gallery中的图片加载到ImageViews中Separatly

我的问题是,如何设置我在特定的ImageView中加载的图像。

进出口面临的ActivityForResult代码中的一些问题(当负载的图片,并将其设置在ImageView1为为例,所有的ImageView采取即时相同的图像)

的完整代码:

package kane.navigationdrawer.activity; 

import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Spinner; 
import android.widget.Toast; 
import kane.navigationdrawer.R; 
import static android.R.attr.data; 
import static kane.navigationdrawer.R.id.spinner; 
import static kane.navigationdrawer.R.id.spinner4; 

    public class FormActivity extends AppCompatActivity { 

private Spinner spinner1; 
Button b1; 
ImageView img1,img2,img3; 
private static int RESULT_LOAD_IMAGE = 1; 
private static int RESULT_LOAD_IMAGE2 = 1; 
private static int RESULT_LOAD_IMAGE3 = 1; 

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

    Spinner spinner = (Spinner) findViewById(R.id.spinner4); 
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner); 
    img1 = (ImageView) findViewById(R.id.img1); 
    img2 = (ImageView) findViewById(R.id.img2); 
    img3 = (ImageView) findViewById(R.id.img3); 


    spinner2.setAdapter(
      new ArrayAdapter<CharSequence>(this, 
        R.layout.custom_spinner_item, 
        FormActivity.this.getResources().getTextArray(R.array.cat_arrays))); 


    spinner.setAdapter(
      new ArrayAdapter<CharSequence>(this, 
        R.layout.custom_spinner_item, 
        FormActivity.this.getResources().getTextArray(R.array.vil_arrays))); 

    img1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent loadIntent = new Intent(Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(loadIntent, RESULT_LOAD_IMAGE); 
     } 
    }); 


    img2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent loadIntent2 = new Intent(Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(loadIntent2, RESULT_LOAD_IMAGE2); 
     } 
    }); 

    img3.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent loadIntent3 = new Intent(Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(loadIntent3, RESULT_LOAD_IMAGE3); 
     } 
    }); 
} 






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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     img1.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    } 

    if (requestCode == RESULT_LOAD_IMAGE2 && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     img2.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    } 
    if (requestCode == RESULT_LOAD_IMAGE3 && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     img3.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    } 
} 
} 

需要你帮助,谢谢

回答

1

您定义了三个请求代码,但它们都具有相同的值,因此无论您的图像选择如何,所有三个if语句都将被执行。

只需将不同的值分配给您的请求代码变量即可解决问题。

private static int RESULT_LOAD_IMAGE = 1; 
private static int RESULT_LOAD_IMAGE2 = 2; 
private static int RESULT_LOAD_IMAGE3 = 3; 
+0

谢谢,我没有注意到! –