1
내 서버에서 사용자를 인증하는 것이 매우 간단한 작업이라고 생각합니다. AsyncTask를 내 활동의 개인 서브 클래스로 사용하고 있지만 인증 후 사용자 객체를 채우려고하면 null로 설정됩니다. onPostExecute() 메서드가 호출되어 이것이 원인이되는 이상한 점이 있습니까? 나는 원래 AsyncTask를 자체 클래스로 가졌지 만 동일한 문제를 겪었 기 때문에 private 서브 클래스를 사용하여이 문제를 해결하려고 노력 중이다. 어떤 도움이 필요합니까? 감사. 여기 Null 포인터 오류로 인한 AsyncTask에서 데이터 반환
내 코드입니다 :public class Testing extends Activity {
private User user;
public User getUser() {
return this.user;
}
public void setUser(User value) {
this.user = value;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView iconImage = (ImageView) this.findViewById(R.id.image);
final Button testButton = (Button) this.findViewById(R.id.testButton);
final TextView text = (TextView) this.findViewById(R.id.text);
iconImage.setImageResource(R.drawable.logo_real);
testButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
LoginTask loginTask = (LoginTask) new LoginTask().execute(new Void[0]);
text.setText(user.getFormattedFullName());
}
});
}
private class LoginTask extends AsyncTask<Void, Void, User> {
public LoginTask() {
}
protected User doInBackground(Void... params) {
User newUser = new User();
try {
System.out.println("testing task");
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://10.0.2.2:8080/Dugout/[email protected]&PASSWORD=password");
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
String message = "";
String inputLine = "";
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
while ((inputLine = bf.readLine()) != null) message+=inputLine;
JSONObject returnedUser = new JSONObject(message);
int userId = returnedUser.getInt("userId");
boolean loginSuccess = returnedUser.getBoolean("login_success");
String firstName = returnedUser.getString("firstName");
String lastName = returnedUser.getString("lastName");
newUser.setId(userId);
newUser.setFirstName(firstName);
newUser.setLastName(lastName);
newUser.setLoginSuccess(loginSuccess);
return newUser;
} catch (Exception e) {
newUser.setLoginSuccess(false);
return newUser;
}
}
protected void onPostExecute(User user) {
setUser(user);
}
}
}