Android startCamera дает мне null Intent и … разрушает мою глобальную переменную?

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

когда я пытаюсь запустить свою камеру, я могу сделать снимок, даже сохранить его на моей 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 Solutions collect form web for “Android startCamera дает мне null Intent и … разрушает мою глобальную переменную?”

    Возможно, запуск ACTION_IMAGE_CAPTURE приведет к ACTION_IMAGE_CAPTURE вашей активности из памяти. Вы должны проверить (я просто журнал, отладчик может иметь свои собственные побочные эффекты), что onCreate() вашей деятельности вызывается до onActivityResult() . Если это так, вы должны подготовить свою деятельность для onSaveInstanceState(Bundle) инициализации, возможно, используя onSaveInstanceState(Bundle) .

    Обратите внимание, что решение о том, следует ли отключать действие или сохранять его в фоновом режиме, зависит от общего состояния системы, которое не поддается контролю. Меня не удивит, если решение, когда вы сделаете первый снимок, «закрывает его!», Но когда вы делаете снимок снова, он «держит его в фоновом режиме».

    Он не уничтожает переменные. Но после стольких дней исследований LOL у меня есть решение моей ошибки. Когда я помещаю отладчик, метод вызывает его, как после съемки.

    • OnCreate ()
    • onActivityResult ()
    • onCeate ()
    • onResume ()

    Его зафиксировано, просто введя следующие строки в манифест. Это происходит из-за изменений конфигурации камеры и режима мягкого ввода windows.

       Размер   
    Interesting Posts

    Пакетное преобразование .doc в .docx (и эквивалентное для других офисных форматов)?

    Как загрузить org.w3c.dom.Document из XML в строку?

    События C # и безопасность streamов

    как преобразовать NEWLINE в с помощью XSLT?

    Как совместимость процессоров Windows работает с гиперпотоковыми процессорами?

    конвертировать письма в номера

    Переменные среды Windows XP

    Угловой запрос JS POST, не отправляющий данные JSON

    Самый простой способ сделать огонь и забыть метод в C #?

    Windows 8 не будет установлена ​​на моем ПК через USB, но будет с моего ноутбука. Код ошибки: 0xC00000005

    Не удалось получить доступ к большинству интернет-сайтов. DNS_PROBE_FINISHED_NXDOMAIN

    Выполнение SQL-запросов в таблице Excel в рабочей книге с помощью макроса VBA

    Pass ArrayList to Activity

    Является ли PCI x16 и PCI Express 2.1 одинаковым?

    Устройства Android с разной высотой принимают ту же папку макета

    Давайте будем гением компьютера.