java - 如何在android中的自定义适配器类中调用相机 Intent ?

标签 java android

我有一个名为 CustomListAdapter 的适配器类,我是这样写的,所以在这里我遇到了一个问题类转换异常任何人都建议我

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null)
        convertView = inflater.inflate(R.layout.myplace, null);

    final ImageView ivCamera = (ImageView)convertView.findViewById(R.id.ivCamera);

    ivCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder adb = new AlertDialog.Builder(v.getRootView().getContext());
            adb.setTitle("Do u Want to Take Photo");
            adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    count++;
                    String file = dir+count+".jpg";
                    File newfile = new File(file);
                    try {
                        newfile.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    Uri outputFileUri = Uri.fromFile(newfile);

                    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

                    ((Activity) context).startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);

                }
            });

            adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });

            adb.show();
        }
    });
}

我遇到类转换异常,请建议我如何解决此问题

在我的 Activity 中我调用这个方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    customListAdapter.onActivityResult(requestCode, resultCode, data);
    Bitmap bp = (Bitmap) data.getExtras().get("data");
    ivCamera.setImageBitmap(bp);
}

最佳答案

试试这个:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case TAKE_PHOTO_CODE:
                if(resultCode == Activity.RESULT_OK) {
                    customListAdapter.onActivityResult(requestCode, resultCode, data);
            Bitmap bp = (Bitmap) data.getExtras().get("data");
            ivCamera.setImageBitmap(bp);
                }
                break;
        }
    }

关于java - 如何在android中的自定义适配器类中调用相机 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816112/

相关文章:

java - Spring中如何保存配置设置?

java - NumberFormat 允许零或两位数字吗?

android - 将应用程序设置为与 UI 自动程序的默认按钮交互

android - 什么编解码器用于 android 中 AudioRecord.read() 的音频数据

java - 如何从 JEditorPane 获取光标当前所在行的行文本?

java - Jetty httpOnly cookies configurarion 就像在 Tomcat 上一样

android - 自动化 Android Monkey 运行的想法

android - 在 CursorAdapter 中更改光标未正确更新列表项 View

java - 如何将位图转换为 View ?

java - Glassfish 4 无法在 Linux 上启动