как избежать startActivityForResult при нажатии кнопки назад в приложении для Android - PullRequest
2 голосов
/ 16 сентября 2011

в моем приложении, когда кнопка нажата, она открывает камеру для захвата изображения.код камеры выглядит следующим образом ...

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
             file = new File(Environment.getExternalStorageDirectory(),  String.valueOf(System.currentTimeMillis()) + ".jpg"); 
             Log.e("ffffffffffiiiiiiiiilllllllllle ",""+file);
             f = String.valueOf(file);
             mCapturedImageURI = Uri.fromFile(file);
             Log.e("outputFileUri ",""+mCapturedImageURI);
             setupImage(intent);
             intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
             startActivityForResult(intent, 3);

в результате действия при запуске я показываю окно предупреждения с двумя кнопками.При нажатии кнопки 1 изображение будет загружено на URL-адрес, а при нажатии кнопки 2 оно будет загружено на другой URL-адрес.

Теперь проблема заключается в том, что при открытии камеры и захвате изображенияВернитесь к предыдущему действию, которое пользователь использовал, чтобы нажать кнопку «Назад», и к этому времени также появится окно предупреждения.Пользователь нажимает кнопку 1 или кнопку 2, при которой происходит сбой приложения.

Как избежать появления окна предупреждения при нажатии кнопки «Назад» без захвата изображения.

Ответы [ 3 ]

4 голосов
/ 16 сентября 2011

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

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK )
    {
        if(requestCode == CAMERA_ACTIVITY)
        //PROCESS YOUR LOGIC
    }

}
2 голосов
/ 16 сентября 2011

Вы получите RESULT_CANCELED в onActivityResult() звонящего Activity при нажатии на спину.

1 голос
/ 16 сентября 2011

возьмите логическое значение flag, для которого при захвате изображения установлено значение true, и перед отображением окна предупреждения проверьте значение флага ... то есть, если значение flag равно true, отобразите диалоговое окно

...