2013-06-14 7 views
0

Я запускаю камеру ActivityForResult, а мой resultCode возвращается как 0, а мой requestCode возвращается как -1. Самое смешное, что это был работающий до того, как я использовал resultCode. Позвольте мне показать вамresult_ok для возврата камеры 0

private class ClickListener implements View.OnClickListener { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, CAMERA); 
     }  
    } 

    public void onActivityResult(int resultCode, int requestCode, Intent data) { 

     if (requestCode == CAMERA) {     
      Bundle extras = data.getExtras(); 
      bmp = (Bitmap) extras.get("data"); 
      MediaStore.Images.Media.insertImage(getActivity() 
      .getContentResolver(), bmp, "picture", "a picture"); 
      Log.v("HEY", "Your image should be in the gallery now"); 
     }  
    } 

Однако я, очевидно, нужно добавить некоторый код в случае, если пользователь нажимает отменить, а не щелкать фотографию. Так что я добавил код, и мой новый onActivityResult выглядит следующим образом

public void onActivityResult(int resultCode, int requestCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Log.v("RESULT CODE", "" + resultCode); 
     Log.v("REQUEST CODE", "" + requestCode); 
     if (requestCode == CAMERA) { 

      if (resultCode == Activity.RESULT_OK) { 
       Bundle extras = data.getExtras(); 
       bmp = (Bitmap) extras.get("data"); 
       MediaStore.Images.Media.insertImage(getActivity() 
         .getContentResolver(), bmp, "picture", "a picture"); 
       Log.v("HEY", "Your image should be in the gallery now"); 
      } else if (resultCode == Activity.RESULT_CANCELED) { 
       Log.v("CANCELED", "The user has canceled the activity"); 
      } 
     } 

    } 

не только не работает мой LogCat говорит

06-13 20:53:36.320: V/RESULT CODE(6140): 0 
06-13 20:53:36.320: V/REQUEST CODE(6140): -1 

Почему это происходит? Кто-нибудь сталкивался с этим раньше?

ответ

3

Это правильный onActivityResult и причина вашей проблемы:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {} 

VS Yours:

@Override 
public void onActivityResult(int resultCode, int requestCode, Intent data) {} 
Смежные вопросы