30/09/2018, 20:39

Bị lỗi trong doInBackground

package tienloc.myapplication;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
Bitmap bmp;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView)findViewById(R.id.imageURL);
runOnUiThread(new Runnable() {
@Override
public void run() {
new LoadImage().execute(“http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg”);

        }
    });
}
private class LoadImage extends AsyncTask<String,Integer,String> {
    @Override
    protected String doInBackground(String... params) {
        try {
            URL u = new URL(params[0]);
            bmp = BitmapFactory.decodeStream(u.openConnection().getInputStream());
            img.setImageBitmap(bmp);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

}

Mọi người cho em hỏi. Khi em chạy thử trên máy ảo và cả máy thật ( Android 4.4 ), thì nó cứ bị crash. Nếu em debug và chạy từng dòng thông qua F8 , thì chương trình chạy bình thường và load ra ảnh bình thường. Lỗi này là sao ạ e tìm google nhưng không ra được thông tin gì cả.
Chương trình này chỉ đơn giản là lấy hình từ internet rồi đem về máy hiển thị thôi.

X viết 22:46 ngày 30/09/2018

Kiến thức rất cơ bản. Không cập nhật giao diện trong doInBackground.
Có lẽ bạn mới học và cũng chưa hiểu tại sao truyền vào: String,Integer,String?

Thanh Thịnh Đới viết 22:53 ngày 30/09/2018

img.setImageBitmap(bmp);

Bạn phải đặt lệnh này ở onPostExcute(Bitmap bitmap)
img.setImageBitmap cái này gọi ở UI thread nhé.

Bui Tien Loc viết 22:55 ngày 30/09/2018

dạ đúng rồi. em mới học. thanks mọi người ạ.

Bài liên quan
0