我知道,如果我将AsyncTask用作内部类,则可以调用方法getDialog.dismiss,但由于该类中的代码量很大,如果我尝试调用该方法说它为Non-静态方法'getDialog()'不能从静态上下文中引用。我该如何运作?

public class BackgroundImageResize extends AsyncTask<Uri, Integer, byte[]>
      {

Bitmap mBitmap;
byte[] mUploadBytes;
Context context;

public BackgroundImageResize(Context ctx) {
    context = ctx.getApplicationContext();
}

public BackgroundImageResize(Bitmap bitmap) {
    if (bitmap != null) {
        this.mBitmap = bitmap;
    }
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    Toast.makeText(context, "compressing image",
Toast.LENGTH_SHORT).show();
    progressBar.setVisibility(View.VISIBLE);
}

@Override
protected byte[] doInBackground(Uri... params) {

    try {
        mBitmap =
MediaStore.Images.Media.getBitmap(context.getContentResolver(),
params[0]);
    } catch (IOException e) {
        e.printStackTrace();
    }

    byte[] bytes;
    bytes = getBytesFromBitmap(mBitmap, 70);
    return bytes;
}

@Override
protected void onPostExecute(byte[] bytes) {
    super.onPostExecute(bytes);
    mUploadBytes = bytes;
    progressBar.setVisibility(View.INVISIBLE);
    //execute the upload task

    ChooseImageActivity.mOnInputListener.sendInput(mUploadBytes);
    ChooseImageActivity.getDialog().dismiss();


}

public static byte[] getBytesFromBitmap(Bitmap bitmap, int quality) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream);
    return stream.toByteArray();
}
}

最佳答案

AsyncTask的构造函数上传递回调并调用onPostExecute

this

关于java - 如何调用getDialog.dismiss以从另一个类(未嵌套)中的AsyncTask类中消除对话框 fragment ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57092702/

10-12 00:22
查看更多