2014-11-25 2 views
0

내가 AsyncTask를로해서 ProgressDialog을하려고 해요,하지만 난 "mainactivity.this"자바 공연이 메시지를 컨텍스트를 호출 할 때오류 프로그래밍해서 ProgressDialog

모양 "유형의 MainActivity의 어떠한 둘러싸는 인스턴스 범위에 액세스 할 수 없습니다" 코드

static class Tarea1 extends AsyncTask<ListView, String, CityAdapter>{ 

    Context contexto; 
    ListView list; 
    InputStream is; 
    ArrayList<City> cities = new ArrayList<City>(); 

    public void cargarContenido(Context contexto){ 
     this.contexto = contexto; 
    } 
    protected void onPreExecute(){ 
      super.onPreExecute(); 
      ProgressDialog pDialog = new ProgressDialog(MainActivity.this);//here is the error 
      pDialog.setMessage("Loading products. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
    } 
+1

asynctask에 컨텍스트를 제공하고 있으므로 'ProgressDialog pDialog = new ProgressDialog (contexto);'를 실행하지 않으시겠습니까? –

+0

좋습니다, 미국 this.getAppContext(); /// 새로운 ProgressDialog (this.getAppContext()); – Chefes

답변

0

귀하의 Tarea1 클래스가 정적으로 정의 되었기 때문입니다. 내부 클래스가 정적이면 외부 클래스의 객체를 참조 할 수 없습니다.

ZouZou는 컨텍스트를 생성자에 전달할 것이므로 그의 설명에서 정확합니다. 대신 this.context을 사용해야합니다. 전달중인 컨텍스트가 Activity 컨텍스트인지 확인하십시오.

그렇지 않으면 static 한정자를 삭제하면됩니다. 그것은 맛의 문제이지만, 당신이 외부 클래스에서 더 분리 된 것처럼 정적 내부 클래스를 사용하는 것을 선호합니다. 그렇게하면 파일을 자신의 파일로 옮기면 파일을 따로 따로 볼 필요가 없습니다.

+0

고마운 사람, 지금은 효과가 있어요. –