2012-11-30 5 views
1

코드는 내가 예는 MainActivityAsyncTask를 제어 UI 스레드

public class MainActivity extends activity{ 
    public class DemoAsynTask extends AsyncTask{ 
    } 
} 

내부에서 작업하지만 클래스입니다 DemoAsynTask 클래스 안에, 내가 본되지

public class DemoAsynTask extends AsyncTask{ 
@Override 
protected void onPreExecute(){  
    try{   

     MainActivity myActivity = new MainActivity(); 
     myActivity.super.onCreate(savedInstanceState); 
     myActivity.setContentView(R.layout.activity_main); 

     EditText txtInformation = (EditText) myActivity.findViewById(R.id.txtInformation); 
    txtInformation.setText("TESTING"); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 
    @Override 
    protected Object doInBackground(Object... params) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

사용 가지고있는 DemoAsynTask 클래스는 별도의 파일입니다 그리고 그것을 별도로 호출하고 싶지만 null 포인터 예외가 있습니다.

public class MainActivity extends activity{ 
} 
public class DemoAsynTask extends AsyncTask{ 
} 

오류 로그 java.lang.NullPointerException이

+2

'DemoAsyncTask'를 사용하여 오류 로그와 소스 코드를 게시하십시오. – Wenhui

+2

왜'onPreExecute'에서 이것을하는지. ** 이것을하지 마십시오 ** 단지'활동'이 그렇게하도록하십시오. –

+1

asyncTask를 사용하여 데이터를 게시하고 UI에서 성공/실패 상태를 표시하려는 경우 (상태 성공/실패가 서버에 의해 반환 됨) – user1865039

답변

1

이봐 당신이 만드는 MainActivity (MainActivity의 인스턴스 필요없이이 활동의 ​​라이프 사이클에 따라 인스턴스화 될 수 있습니다) 다른 클래스 또는 내부 클래스로 DemoAsyncTask을 MainActivity. onPreExecute()에서 상태 "TESTING"을 설정하고 onPostExecute()에서 doInBackground()에서 얻은 결과에 따라 상태를 변경합니다.

+0

하지만 다른 클래스의 DemoAsyncTask를 넣으면이 오류가 발생합니다. findViewById (int) 메소드가 정의되지 않았습니다. – user1865039