我正在開發一個Android應用程序,並且我試圖在登錄後從服務器獲取數據,而且無論我如何做,我都失敗了因爲很多小時。 。請讓我知道我在這裏做錯了什麼。Android:從線程中獲取服務器的數據,並將其傳遞給UI線程失敗
錯誤日誌:
07-10 15:24:09.136 4588-4588/com.example.TestLunch E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.TestLunch, PID: 4588
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:139)
at com.example.TestLunch.Login.Login$3.onClick(Login.java:104)
上面來,因爲我想從打印服務器的應答。
public class Login extends Activity {
RestTemplate rest = StaticRestTemplate.getRest();
protected volatile String reply;
// below code is inside the onCreate method
Button loginButton = (Button) findViewById(R.id.LoginButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(v == null)) {
EditText userEmail = (EditText) findViewById(R.id.usernameText);
EditText userPassword = (EditText) findViewById(R.id.PasswordField);
if (!(userEmail.getText().toString().isEmpty())) {
if (!(userPassword.getText().toString().isEmpty())) {
loginUserViaRest(userEmail.getText().toString(), userPassword.getText().toString());
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
reply = rest.getForObject(
"http://192.168.178.60:8080/dashboard", String.class);
}
});
thread.start();
ProgressDialog progress = new ProgressDialog(Login.this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading...");
progress.show();
while (thread.getState()!=Thread.State.TERMINATED){
}
progress.dismiss();
// I get the error at below line.
Log.d("Reply is ",reply);
那麼,什麼錯誤。任何指針,謝謝。
我不知道爲什麼你正在使用Thread類,使用的AsyncTask –
@mohammadsadeghsaati:如果它是異步任務,我不會在將來的某個點上獲取我的數據,我該如何檢查它。可以給我寫一個符合要求的答案,我會平行檢查它。 –