2017-09-07 3 views
0

このエラーのようなコードを書くと、次のようになります:どのようにしてasynctaskをWriterExceptionにスローするのですか?

doInBackground(文字列...) 'com ..... QrGeneratorは' androidのdoInBackground(Params ...)と衝突します。 .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); 
    } 
} 
+0

トライキャッチ(例外e)のキャッチのinsted(例外:IllegalArgumentExceptionはIllegalArgumentException) –

+0

私はまだ同じエラーを取得します – shotofop

答えて

0

あなたはdoInBackground(...)のように、メソッドのオーバーライドに追加の例外をスローすることはできません。 this linkを参照してください。メソッド内で例外をキャッチする必要があります。あなたのメソッドを修正してWriterExceptionもキャッチしました。

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

} catch (IllegalArgumentException | WriterException e1) { 
    e1.printStackTrace(); 
    return null; 
} 
関連する問題