как сделать так, чтобы асинхронная задача выдавала исключение WriterException?

Когда я пытаюсь написать такой код, возникает эта ошибка:

doInBackground(String...)" в "com.....QrGenerator" конфликтует с "doInBackground(Params...)" в "android.os.AsyncTask"; переопределенный метод не вызывает «com.google.zxing.WriterException»

Вот код:

private class QrGenerator extends AsyncTask<String,Integer,Bitmap>{
    @Override
    protected Bitmap doInBackground(String... strings) throws WriterException  {

    StringBuilder strBuilder = new StringBuilder();
    for (int i = 0; i < strings.length; i++) {
       strBuilder.append(strings[i]);
    }
    String value = strBuilder.toString();

    BitMatrix bitMatrix;
    try {
        bitMatrix = new MultiFormatWriter().encode(
                value,
                BarcodeFormat.DATA_MATRIX.QR_CODE,
                QRcodeWidth, QRcodeWidth, null
        );

    } catch (IllegalArgumentException Illegalargumentexception) {

        return null;
    }
    int bitMatrixWidth = bitMatrix.getWidth();

    int bitMatrixHeight = bitMatrix.getHeight();

    int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];

    for (int y = 0; y < bitMatrixHeight; y++) {
        int offset = y * bitMatrixWidth;

        for (int x = 0; x < bitMatrixWidth; x++) {

            pixels[offset + x] = bitMatrix.get(x, y) ?
                    getResources().getColor(R.color.QRCodeBlackColor) : getResources().getColor(R.color.QRCodeWhiteColor);
        }
    }
    Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);

    bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight);
    return bitmap;
}

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
        imageView.setImageBitmap(bitmap);
    }
}

person shotofop    schedule 07.09.2017    source источник
comment
Попробуйте поймать (Исключение e) вместо catch (IllegalArgumentException IllegalargumentException)   -  person Akshay Katariya    schedule 07.09.2017
comment
я все еще получаю ту же ошибку   -  person shotofop    schedule 07.09.2017


Ответы (1)


Вы не можете создавать дополнительные исключения в переопределенных методах, таких как doInBackground(...). См. эта ссылка. Вы должны поймать исключение в своем методе. Я изменил ваш метод, чтобы также поймать WriterException.

try {
    bitMatrix = new MultiFormatWriter().encode(
            value,
            BarcodeFormat.DATA_MATRIX.QR_CODE,
            33, 33, null
    );

} catch (IllegalArgumentException | WriterException e1) {
    e1.printStackTrace();
    return null;
}
person clever_trevor    schedule 07.09.2017