2015-04-23 56 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()? - 一切都變得明顯。