2015-04-23 57 views
0

我已经Adapter类称为CustomListAdapter类我这样写的,所以在这里我得到一个问题类转换异常的任何一个建议我如何在android中的CustomAdapter类中调用相机意图?

@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(); 
     } 
    }); 
} 

我得到类转换异常请建议我如何解决这个问题

在我的活动我把这种方法

@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); 
} 
+0

请张贴你的日志猫跟踪。 – Keshav1234

+0

创建活动相机意图方法,并呼吁警告对话框OK –

+0

同样的错误,其显示 – ManikantaReddy

回答

0

http://developer.android.com/training/camera/photobasics.html

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     mImageView.setImageBitmap(imageBitmap); 
    } 
} 

1)你有没有检查 - !也许onActivityResult()火灾后,一些其他的活动,开始为结果

2)resultCode为== RESULT_OK & &演员= NULL & & extras.get( “数据”)= null可能很关键

3)尝试在调试模式下运行接收代码 - 某些设备可能无法传递位图(例如,因为它非常大)。如果是的话 - 去供给photoURI,然后显示之前调整照片

4)试图找到库获取照片

1

试试这个:

@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; 
     } 
    } 
+0

我得到的CustomList中的错误适配器类java.lang.ClassCastException:android.app.Application不能转换为android.app.Activity at info.androidhive.Labelleza.adapter.CustomListAdapter $ 3 $ 1.onClick(CustomListAdapter.java: 167) – ManikantaReddy

+0

是的。现在在线167是什么? – greenapps

0

是的,有2种类型的上下文中在Android中。其中1个是Activity-type,另一个是应用上下文。显然,你应该传递给你的活动适配器引用,即新的适配器(YourActivity.this),而不是新的适配器(getApplicationContext())

回答这个问题 - 什么样的活动应该执行onActivityResult()使用getApplicationContext()的结果的活动。startActivityForResult()? - 一切都变得明显。