如何打开相机,或从recycleriew项目中的按钮调用startActivityForResult

时间:2017-08-10 07:25:41

标签: android android-recyclerview android-camera android-viewholder

我正在尝试打开相机,同时点击按钮照片,但此按钮位于recyclerview的{​​{1}},我无法致电startActivityForResult,有什么办法吗?或者别的什么来启动相机并以同样的方式拍照,请解释我如何处理它以及为什么我不能打电话startActivityForResult,我看到以前的答案和我没有得到它,这是我的代码,

谢谢。

class DommageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

TextView dommage,componant,side;
Button act_photo;

public DommageViewHolder(View itemView) {
    super(itemView);
    dommage=(TextView)itemView.findViewById(R.id.dommage_value);
    componant=(TextView)itemView.findViewById(R.id.componant_value);
    side=(TextView)itemView.findViewById(R.id.side_value);
    act_photo = (Button)itemView.findViewById(R.id.btn_photo_dommage);

    act_photo.setOnClickListener(this);
}

public void bind(DommageGlobale myObject) {
    dommage.setText(myObject.getDammage());
    componant.setText(myObject.getComponant());
    side.setText(myObject.getSide());

}

public interface OnCameraButtoClick{
    void onClick();
}

@Override
public void onClick(View view) {
    if(view.getId() == act_photo.getId()){

    }

}



}

2 个答案:

答案 0 :(得分:0)

使用以下代码;

 holder.upload_doc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             taskDiscussionId=   mDataset.get(position).getTaskdiscussId();
                uploadImage();
            }
        });

uploadImage()定义如下;

private void uploadImage() {

   Intent intent = new Intent();
   intent.setType("*/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),PICK_FILE_REQUEST);
}

现在您可以定义startActivityForResult ...

答案 1 :(得分:0)

试试这段代码:

if(view.getId() == act_photo.getId()){ HERE }

中调用以下方法
public void OpenCamera(){
 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            view.getContext().startActivity(intent);
}
不要忘记为AndroidManifest.xml文件添加权限:

<uses-permission android:name="android.permission.CAMERA"/>

此外,对于Marshmallow,您需要处理运行时权限。 我希望这会有所帮助。