按钮与图像视图问题

时间:2018-01-18 12:35:43

标签: android android-fragments imageview

我创建了一个fragment,其中包含一个按钮和一个图像视图。在按钮上单击相机打开时,我拍照,然后我希望该图片显示在imageView

如何激活此任务?

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View rootview = inflater.inflate(R.layout.fragment_new_visitor, container, false);

    capture=rootview.findViewById(R.id.capture);

    capture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            startActivity(intent);
        }
    });


    return rootview;

请帮助

2 个答案:

答案 0 :(得分:0)

试试这个,

在创建方法之前声明这个

U

在onclick事件中,执行此操作

private final int requestCode = 20;

然后覆盖oncreate方法

Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photoCaptureIntent, requestCode);

答案 1 :(得分:0)

公共类BlankFragment扩展了Fragment {

Button btnGallery,btnCamera;
public static final int GALLEY_REQUEST_CODE = 10;
private static final int CAMERA_REQUEST = 100;
private String TAG = MainActivity.class.getSimpleName();
ImageView image;
private Uri realUri;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_blank, container, false);
}

@Override
public void onStart() {
    super.onStart();

    btnGallery = (Button)getView().findViewById(R.id.btnGallery);
    btnCamera  = (Button)getView().findViewById(R.id.btnCamera);
    image = (ImageView)getView().findViewById(R.id.image);

    btnGallery.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent openGallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(Intent.createChooser(openGallery, "Open Gallery"), GALLEY_REQUEST_CODE);
        }
    });

    btnCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        }
    });


}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == GALLEY_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        image.setImageURI(data.getData()); // set image to image view
        try{
            // Get real path to make File
            realUri = Uri.parse(getRealPathFromURI(data.getData()));
            Log.d(TAG,"Image path :- "+realUri);
        }
        catch (Exception e){
            Log.e(TAG,e.getMessage());
        }
    }

    if(requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK){
        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            image.setImageBitmap(photo);
        }
    }
}
public String getRealPathFromURI(Uri contentUri) {
    String res = null;
    String[] proj = { MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().getApplicationContext().getContentResolver().query(contentUri, proj, null, null, null);
    assert cursor != null;
    if(cursor.moveToFirst()){;
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        res = cursor.getString(column_index);
    }
    cursor.close();
    return res;
}

}