【问题标题】:button with image view problems有图像视图问题的按钮
【发布时间】:2018-01-18 12:35:42
【问题描述】:

我创建了一个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;

请帮忙

【问题讨论】:

标签: android android-fragments imageview


【解决方案1】:

试试这个,

在创建方法之前声明这个

private final int requestCode = 20;

在 onclick 事件中,执行此操作

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

然后重写 oncreate 方法

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(this.requestCode == requestCode && resultCode == RESULT_OK){
        Bitmap bitmap = (Bitmap)data.getExtras().get("data");
        imageview.setImageBitmap(bitmap);
    }
}

【讨论】:

  • 请说说requestCode=20的真实使用
  • 您可以在单个 Activity 中多次调用 startActivityForResult(),这允许不同的 Intent 执行不同的操作。使用请求代码来识别您从哪个 Intent 返回。
  • 例如:可以为result启动两个activity:private static final int req_1 = 1;私有静态最终 int req_2 = 2; startActivityForResult(cameraIntent, req_1); startActivityForResult(cameraIntent, req_2);在你的 onActivityForResult() @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == req_1 && resultCode == RESULT_OK) { } else if (requestCode == req_2 && resultCode == RESULT_OK) { } }
【解决方案2】:

公共类 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;
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2017-06-11
    相关资源
    最近更新 更多