Я очень новичок в разработке Android, но вывел, что я не переопределил метод onPostExecute правильно (ошибка), но я потерял то место, где я ошибся. Правильно ли я предполагаю, что onPostExecute вызывается основным потоком пользовательского интерфейса, а не Async? onPostExecute вообще не вызывается, и добавление @Override дало мне ошибку.Async onPostExecute Не вызывается или правильно переопределяется
В принципе, я просто загружаю изображение. Изучение этого асинхронного бизнеса и Java тоже.
class ImageReceiver extends AsyncTask<String, Integer, Bitmap>{
private View rootView;
public ImageReceiver(View rootView){
this.rootView=rootView;
}
@Override
protected Bitmap doInBackground(String... params) {
System.out.println("got here");
try {
URL url = new URL(params[0]);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
if(httpCon.getResponseCode() !=200){
throw new Exception("Failed to connect");
}
InputStream is = httpCon.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is);
System.out.println(url.toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void OnPostExecute(Bitmap img){
System.out.println("postexecute");
ImageView im = (ImageView)rootView.findViewById(R.id.incomming_image);
im.setImageBitmap(img);
}
}
Я называю новый THEAD как и в методе OnCreate в MainActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
View = getWindow().getDecorView().findViewById(android.R.id.content);
ImageReceiver imageReceiver = new ImageReceiver(View);
imageReceiver.execute("http://joshuacroft.co.uk/images/killzone_mercenary_2.jpg");
}
Неуверенные, где я могу исправить, так что любая помощь приветствуется.
о человеке, я смотрел на этом коде в течение нескольких часов. –
Правильный ответ, если вы используете Eclipse, вы должны увидеть зеленый треугольник слева от методов overriden, это поможет вам – rickyalbert