2014-10-25 2 views
0

Я очень новичок в разработке 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"); 

} 

Неуверенные, где я могу исправить, так что любая помощь приветствуется.

ответ

0

У вас есть ошибка, чувствительная к регистру. Смотрите письмо o

изменения OnPostExecute(Bitmap img) в onPostExecute(Bitmap img)

Также не забудьте позвонить super.onPostExecute(bitmap);. Для каждого метода переопределенного хорошая практика, чтобы назвать super метод в качестве первого оператора :)

+0

о человеке, я смотрел на этом коде в течение нескольких часов. –

+0

Правильный ответ, если вы используете Eclipse, вы должны увидеть зеленый треугольник слева от методов overriden, это поможет вам – rickyalbert

Смежные вопросы