onbackpressed в программе выбора файлов шоу - PullRequest
0 голосов
/ 20 марта 2019
private void showFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);

}

эй. Я использовал этот код для выбора изображения из хранилища. но если я нажму кнопку "Назад" в моем гаджете. он фк. как дать условие об отмене выбора из хранилища .. а не принудительно закрыть?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE_REQUEST) {
        filePath = data.getData();
        if(filePath != null) {
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), filePath);
                imageView.setImageBitmap(bitmap);
                Toast.makeText(this, data.getDataString(), Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else if(filePath == null){
            startActivity(new Intent(this,HalamanUser.class));
        }
    } else if (requestCode == CAMERA_REQUEST) {

        Log.i("hello", "REQUEST cALL");
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);

        } catch (Exception e) {
            Log.i("hello", "Exception" + e.getMessage());
        }

    }else {
        startActivity(new Intent(this,HalamanUser.class));
    }
}

1 Ответ

0 голосов
/ 20 марта 2019

Когда пользователь нажимает назад, результатом будет RESULT_CANCELED , а data, который вы получите, будет нулевым.Таким образом, приложение вызывает сбой при вызове data.getData(), когда вы вызываете getData() для нулевого объекта.Есть несколько способов обойти это: вы можете проверить, что такое resultCode, и убедиться, что это RESULT_OK.Вы также можете просто проверить, является ли data Intent нулевым, прежде чем пытаться получить данные из него:

if (requestCode == PICK_IMAGE_REQUEST) {
    if (data != null) {
        filePath = data.getData(); 
    } else {
        // Note: if filePath is by default null, you don't need this else statement
        filePath = null; 
    }
    if (filePath != null) {
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...