2015-01-04 5 views
0

Я исследовал это много на переполнении стека, но проблема не устранена. У меня есть активность main, и он вызывает startActivityForResult для моей деятельности takeapicture. Вот мой код в takeapicture, который возвращает результаты:Сбой Предоставление результата Результат

private Camera.PictureCallback mPicture = new Camera.PictureCallback() { 

    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     pictureFile = null; 
     try { 
      pictureFile = createImageFile(1); 
     } catch (Exception e) {System.out.println(e.getCause()); 
      System.out.println("lol");} 
     if (pictureFile == null){ 
      System.out.println("lol"); 
      return; 
     } 

     try { 
      System.out.println(Arrays.toString(data)); 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 
     } catch (FileNotFoundException e) { 
      System.out.println(e.getCause()); 
     } catch (IOException e) { 
      System.out.println(e.getCause()); 
     } 
     System.out.println(pictureFile.getAbsoluteFile()); 
     Intent intent = new Intent(); 
     intent.putExtra("SavedImageDirectory", pictureFile); 
     setResult(RESULT_OK, intent); 
     finish(); 
    } 
}; 

При запуске этого я получаю следующее сообщение об ошибке в первой строке, которая использует SavedImageDirectory дополнительный:

java.lang.RuntimeException: Failure delivering result ResultInfo{... 
... 
Caused by: java.lang.NullPointerException 
.... 

Похоже, что дополнительный имеет a vaue, но я не вижу, где это может пойти не так. Какие-нибудь советы? Заранее спасибо.

ответ

0

как вы читаете, что дополнительное, getStringExtra()? это может быть проблемой, поскольку вы устанавливаете объект File в этом дополнительном состоянии, поэтому получение значения как String Extra будет NULL.

я не уверен, но я думаю, что putExtra("",File) будет версией putExtra()Serializable value так что вы должны прочитать его как getSerializableExtra() или просто добавить имя файла в дополнительном

i.putExtra("SavedImageDirectory", pictureFile.getAbsolutePath()); 

или быть более конкретными вам может также добавить имя файла

i.putExtra("SavedImageDirectory", pictureFile.getAbsolutePath() + pictureFile.getName()); 

Таким образом, вы можете прочитать его как String Extra.

0

Все на Intent.putExtra справки о (имя, значение) говорит: «Имя» должно включать в себя пакет префикс, а не только строки, как «SavedImageDirectory»

+0

Все еще не работает. Я изменил его на префикс пакета, но проблема сохраняется, с тем же сообщением об ошибке. – SalmonKiller

Смежные вопросы