Android startCamera дает мне нулевое намерение и ... уничтожает ли моя глобальная переменная?

У меня есть следующая проблема:

когда я пытаюсь запустить камеру, я могу сделать снимок, даже сохранить его на SD-карте, но когда яЯ собираюсь получить путь для его отображения на моем устройстве, я получаю ошибки.

Мои глобальные переменные равны 2 (я использовал 1, но 2 лучше, чтобы убедиться, что это 'странная ошибка):

    private File photofile;
private Uri mMakePhotoUri;

и это моя функция запуска камеры:

@SuppressLint("SimpleDateFormat")
public void farefoto(int num){
// For naming the picture
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
    String n = sdf.format(new Date());
    String fotoname = "Immagine-"+ n +".jpg";

//Going through files and  folders
    File photostorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File photostorage2 = new File(photostorage, "Immagini");
    System.out.println(photostorage+"\n"+photostorage2);
    photostorage2.mkdirs();
// My file (global)
    photofile = new File(photostorage2, fotoname);
    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //intent to start camera
// My URI (global)
    mMakePhotoUri = Uri.fromFile(photofile);
    new Bundle(); // I took this code from internet, but if I remove this line, it's the same
    i.putExtra(MediaStore.EXTRA_OUTPUT, mMakePhotoUri);
    startActivityForResult(i, num); //num would be 1 on calling function
}

и результат моей деятельности:

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if (requestCode == 1){

            try{ // tring my global URI
                photo = f.decodeAndResizeFile(new File(mMakePhotoUri.getPath()));
            }
            catch(NullPointerException ex){
                System.out.println("fail");
                ex.printStackTrace();
                try{ // Trying my global FILE
                photo = BitmapFactory.decodeFile(photofile.getAbsolutePath());
                } catch (Exception e){
                    e.printStackTrace();
                    Toast.makeText(this, "C'è stato un errore. Riprova a scattare la foto.", Toast.LENGTH_LONG).show();
                }

......
......
.......
}

Всегда получаю NullPointerException

Но...если я снова сделаю снимок, это работает !!

Я прочитал все, что мог здесь ... но это не таку меня нет логики, когда я изменяю глобальную переменную, и я не могу взять ее снова ...

Заранее спасибо. Приветствия.

РЕШЕНИЕ

КакАлекс Кон сказал, что моя проблема была в том, что я звонилonCreate доonActivityResult из-за, вероятно, вытеснения из памяти (потому что иногда нене делаю), поэтому я хотел, чтобы мое приложениездоровый» и я попробовал некоторыеtry / catch и поэтому я получаю данные, даже если этозоветonCreate или жеonActivityResult для первого звонка, и я написал, что данные в Bundle, как описано в ссылкевосстановление нашего государства.

Спасибо!.

Ответы на вопрос(2)

Ваш ответ на вопрос