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.
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?
Bạn phải đặt lệnh này ở onPostExcute(Bitmap bitmap)
img.setImageBitmap cái này gọi ở UI thread nhé.
dạ đúng rồi. em mới học. thanks mọi người ạ.