2012-09-29 113 views
1

我在android中很新,我正在開發一個應用程序,通過PHP將數據從android傳遞給MySQL.Now我試圖驗證登錄ID和password.if任何一個字段沒有設置,或者如果登錄ID和密碼錯誤我想顯示警告對話框通知用戶登錄ID或密碼不正確。爲此我寫了下面的代碼。在進度對話框中嵌套提示對話框

public class HomeActivity extends Activity 
{ 

    JSONParser jsonParser = new JSONParser(); 
    private ProgressDialog pDialog; 
    private static String url_check_voter = "http://10.0.2.2/evoting/check_voter.php"; 
    private EditText getUserId; 
    private EditText getPassword; 
    private Button btnLogin;//private Button btnRegister; 
    private TextView lblResult; 
    private Button btnRegister; 
    AlertDialog.Builder alertDialogBuilder; 

    String TAG_SUCCESS="success" ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_activity); 
     getUserId = (EditText)findViewById(R.id.getLoginIdTxt); 
     getPassword = (EditText)findViewById(R.id.getPasswordTxt); 

     btnLogin = (Button) findViewById(R.id.btnLogin); 
     btnRegister = (Button) findViewById(R.id.btnRegister); 




     btnRegister.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) 
      { 

      Intent i = new Intent(getApplicationContext(), RegisterActivity.class); 
      startActivity(i); 
      } 

     }); 



// Set Click Listener 
     btnLogin.setOnClickListener(new View.OnClickListener() 
     { 

      public void onClick(View view) 
      { 
       new CheckVoter().execute(); 
       // Check Login 
       /* String userid = getUserId.getText().toString(); 
        String password = getPassword.getText().toString(); 

        if(userid.equals("")) 
        { 
        if(password.equals("")) 
          onClick(view); 
        else 
        { 
         lblResult.setText("Wrong password"); 
        } 

        } else { 
         lblResult.setText("Username does not exist. Please register."); 
        }*/ 

       } 

      }); 




     } 

    /* public void onClick(View v) 
     { 

     if (v.getId() == R.id.btnLogin) 
     { 
      Intent intent = new Intent(this, CreateVoterSuccess.class); 
      startActivity(intent); 
     } 
     else 
     { 
      Intent intent = new Intent(this, HomeActivity.class); 
      startActivity(intent); 
     } 


}*/ 





class CheckVoter extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(HomeActivity.this); 
     pDialog.setMessage("Verifying Voter. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 


    } 

    /** 
    * getting All products from url 
    * */ 
    protected String doInBackground(String... args) 
    { 
     String loginId = getUserId.getText().toString(); 
     String pwd = getPassword.getText().toString(); 

     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("loginId", loginId)); 
     params.add(new BasicNameValuePair("pwd", pwd)); 
     // params.add(new BasicNameValuePair("description", description)); 

     // getting JSON Object 
     // Note that create product url accepts POST method 
     JSONObject json = jsonParser.makeHttpRequest(url_check_voter, 
       "POST", params); 
     Log.d("Create Response", json.toString()); 
     // Building Parameters 
     //List<NameValuePair> params = new ArrayList<NameValuePair>(); 

     // Building Parameters 

     // getting JSON string from URL 
     //JSONObject json = jsonParser.makeHttpRequest(url_check_voter, "GET", params); 
     // Log.d("All Products: ", json.toString()); 


     try { 
      int success = json.getInt(TAG_SUCCESS); 
      if (success == 1) 
      { 
       Intent i = new Intent(getApplicationContext(), LoginActivity.class); 
       startActivity(i); 

      }else if(success == 2) 
      { 
       //Intent i = new Intent(getApplicationContext(), LoginFail.class); 
       // startActivity(i); 

       alertDialogBuilder = new AlertDialog.Builder(
         HomeActivity.this); 
        // set title 
        alertDialogBuilder.setTitle("Incorrect user name or password"); 

        // set dialog message 
        alertDialogBuilder 
         .setMessage("click ohk to enter username or password") 
         .setCancelable(false) 
         .setPositiveButton("OK",new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) { 
           // if this button is clicked, close 
           // current activity 
           HomeActivity.this.finish(); 
          } 
          }); 

        AlertDialog alert = alertDialogBuilder.create(); 

      } 
      else 
      { 
       //Intent i = new Intent(getApplicationContext(), CreateVoterFail.class); 
       // startActivity(i); 

       alertDialogBuilder = new AlertDialog.Builder(
         HomeActivity.this); 
        // set title 
        alertDialogBuilder.setTitle("Incorrect user name or password"); 

        // set dialog message 
        alertDialogBuilder 
         .setMessage("click ohk to enter username or password") 
         .setCancelable(false) 
         .setPositiveButton("OK",new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) { 
           // if this button is clicked, close 
           // current activity 
           HomeActivity.this.finish(); 
          } 
          }); 
        AlertDialog alert = alertDialogBuilder.create(); 

      } 
      }catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     return null; 
    } 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once done 
     pDialog.dismiss(); 
    } 

} 
} 

這裏插入警告框......

else 
      { 
       //Intent i = new Intent(getApplicationContext(), LoginFail.class); 
       // startActivity(i); 

       alertDialogBuilder = new AlertDialog.Builder(
         HomeActivity.this); 
        // set title 
        alertDialogBuilder.setTitle("Incorrect user name or password"); 

        // set dialog message 
        alertDialogBuilder 
         .setMessage("click ohk to enter username or password") 
         .setCancelable(false) 
         .setPositiveButton("OK",new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) { 
           // if this button is clicked, close 
           // current activity 
           HomeActivity.this.finish(); 
          } 
          }); 

        AlertDialog alert = alertDialogBuilder.create(); 

      } 

我收到運行時錯誤日誌貓在後臺線程如下

09-29 09:54:56.853: D/Create Response(279): {"message":"Product successfully created.","success":0} 
09-29 09:54:56.853: W/dalvikvm(279): threadid=7: thread exiting with uncaught exception (group=0x4001d800) 
09-29 09:54:56.983: D/dalvikvm(279): GC_FOR_MALLOC freed 2836 objects/170040 bytes in 118ms 
09-29 09:54:56.983: E/AndroidRuntime(279): FATAL EXCEPTION: AsyncTask #1 
09-29 09:54:56.983: E/AndroidRuntime(279): java.lang.RuntimeException: An error occured while executing doInBackground() 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.lang.Thread.run(Thread.java:1096) 
09-29 09:54:56.983: E/AndroidRuntime(279): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.os.Handler.<init>(Handler.java:121) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.app.Dialog.<init>(Dialog.java:101) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.app.AlertDialog.<init>(AlertDialog.java:63) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.app.AlertDialog.<init>(AlertDialog.java:59) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.app.AlertDialog$Builder.create(AlertDialog.java:786) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.app.AlertDialog$Builder.show(AlertDialog.java:801) 
09-29 09:54:56.983: E/AndroidRuntime(279): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:220) 
09-29 09:54:56.983: E/AndroidRuntime(279): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:1) 
09-29 09:54:56.983: E/AndroidRuntime(279): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
09-29 09:54:56.983: E/AndroidRuntime(279): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
09-29 09:54:56.983: E/AndroidRuntime(279): ... 4 more 
09-29 09:54:57.793: E/WindowManager(279): Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 09:54:57.793: E/WindowManager(279): android.view.WindowLeaked: Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 09:54:57.793: E/WindowManager(279): at android.view.ViewRoot.<init>(ViewRoot.java:247) 
09-29 09:54:57.793: E/WindowManager(279): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
09-29 09:54:57.793: E/WindowManager(279): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
09-29 09:54:57.793: E/WindowManager(279): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
09-29 09:54:57.793: E/WindowManager(279): at android.app.Dialog.show(Dialog.java:241) 
09-29 09:54:57.793: E/WindowManager(279): at com.example.evoting.HomeActivity$CheckVoter.onPreExecute(HomeActivity.java:134) 
09-29 09:54:57.793: E/WindowManager(279): at android.os.AsyncTask.execute(AsyncTask.java:391) 
09-29 09:54:57.793: E/WindowManager(279): at com.example.evoting.HomeActivity$2.onClick(HomeActivity.java:74) 
09-29 09:54:57.793: E/WindowManager(279): at android.view.View.performClick(View.java:2408) 
09-29 09:54:57.793: E/WindowManager(279): at android.view.View$PerformClick.run(View.java:8816) 
09-29 09:54:57.793: E/WindowManager(279): at android.os.Handler.handleCallback(Handler.java:587) 
09-29 09:54:57.793: E/WindowManager(279): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-29 09:54:57.793: E/WindowManager(279): at android.os.Looper.loop(Looper.java:123) 
09-29 09:54:57.793: E/WindowManager(279): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-29 09:54:57.793: E/WindowManager(279): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 09:54:57.793: E/WindowManager(279): at java.lang.reflect.Method.invoke(Method.java:521) 
09-29 09:54:57.793: E/WindowManager(279): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-29 09:54:57.793: E/WindowManager(279): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-29 09:54:57.793: E/WindowManager(279): at dalvik.system.NativeStart.main(Native Method) 
09-29 09:54:59.273: I/Process(279): Sending signal. PID: 279 SIG: 9 
09-29 09:56:18.005: D/Create Response(313): {"message":"Product successfully created.","success":0} 
09-29 09:56:18.013: W/dalvikvm(313): threadid=7: thread exiting with uncaught exception (group=0x4001d800) 
09-29 09:56:18.153: D/dalvikvm(313): GC_FOR_MALLOC freed 2867 objects/171224 bytes in 123ms 
09-29 09:56:18.153: E/AndroidRuntime(313): FATAL EXCEPTION: AsyncTask #1 
09-29 09:56:18.153: E/AndroidRuntime(313): java.lang.RuntimeException: An error occured while executing doInBackground() 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.lang.Thread.run(Thread.java:1096) 
09-29 09:56:18.153: E/AndroidRuntime(313): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.os.Handler.<init>(Handler.java:121) 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.app.Dialog.<init>(Dialog.java:101) 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.app.AlertDialog.<init>(AlertDialog.java:63) 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.app.AlertDialog.<init>(AlertDialog.java:59) 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.app.AlertDialog$Builder.create(AlertDialog.java:786) 
09-29 09:56:18.153: E/AndroidRuntime(313): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:220) 
09-29 09:56:18.153: E/AndroidRuntime(313): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:1) 
09-29 09:56:18.153: E/AndroidRuntime(313): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
09-29 09:56:18.153: E/AndroidRuntime(313): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
09-29 09:56:18.153: E/AndroidRuntime(313): ... 4 more 
09-29 09:56:18.994: E/WindowManager(313): Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 09:56:18.994: E/WindowManager(313): android.view.WindowLeaked: Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 09:56:18.994: E/WindowManager(313): at android.view.ViewRoot.<init>(ViewRoot.java:247) 
09-29 09:56:18.994: E/WindowManager(313): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
09-29 09:56:18.994: E/WindowManager(313): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
09-29 09:56:18.994: E/WindowManager(313): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
09-29 09:56:18.994: E/WindowManager(313): at android.app.Dialog.show(Dialog.java:241) 
09-29 09:56:18.994: E/WindowManager(313): at com.example.evoting.HomeActivity$CheckVoter.onPreExecute(HomeActivity.java:134) 
09-29 09:56:18.994: E/WindowManager(313): at android.os.AsyncTask.execute(AsyncTask.java:391) 
09-29 09:56:18.994: E/WindowManager(313): at com.example.evoting.HomeActivity$2.onClick(HomeActivity.java:74) 
09-29 09:56:18.994: E/WindowManager(313): at android.view.View.performClick(View.java:2408) 
09-29 09:56:18.994: E/WindowManager(313): at android.view.View$PerformClick.run(View.java:8816) 
09-29 09:56:18.994: E/WindowManager(313): at android.os.Handler.handleCallback(Handler.java:587) 
09-29 09:56:18.994: E/WindowManager(313): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-29 09:56:18.994: E/WindowManager(313): at android.os.Looper.loop(Looper.java:123) 
09-29 09:56:18.994: E/WindowManager(313): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-29 09:56:18.994: E/WindowManager(313): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 09:56:18.994: E/WindowManager(313): at java.lang.reflect.Method.invoke(Method.java:521) 
09-29 09:56:18.994: E/WindowManager(313): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-29 09:56:18.994: E/WindowManager(313): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-29 09:56:18.994: E/WindowManager(313): at dalvik.system.NativeStart.main(Native Method) 
09-29 09:56:48.843: I/Process(313): Sending signal. PID: 313 SIG: 9 
09-29 10:09:07.483: D/Create Response(338): {"message":"Product successfully created.","success":0} 
09-29 10:09:07.483: W/dalvikvm(338): threadid=7: thread exiting with uncaught exception (group=0x4001d800) 
09-29 10:09:07.523: D/dalvikvm(338): GC_FOR_MALLOC freed 2883 objects/171944 bytes in 41ms 
09-29 10:09:07.533: E/AndroidRuntime(338): FATAL EXCEPTION: AsyncTask #1 
09-29 10:09:07.533: E/AndroidRuntime(338): java.lang.RuntimeException: An error occured while executing doInBackground() 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.lang.Thread.run(Thread.java:1096) 
09-29 10:09:07.533: E/AndroidRuntime(338): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.os.Handler.<init>(Handler.java:121) 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.app.Dialog.<init>(Dialog.java:101) 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.app.AlertDialog.<init>(AlertDialog.java:63) 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.app.AlertDialog.<init>(AlertDialog.java:59) 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.app.AlertDialog$Builder.create(AlertDialog.java:786) 
09-29 10:09:07.533: E/AndroidRuntime(338): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:220) 
09-29 10:09:07.533: E/AndroidRuntime(338): at com.example.evoting.HomeActivity$CheckVoter.doInBackground(HomeActivity.java:1) 
09-29 10:09:07.533: E/AndroidRuntime(338): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
09-29 10:09:07.533: E/AndroidRuntime(338): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
09-29 10:09:07.533: E/AndroidRuntime(338): ... 4 more 
09-29 10:09:08.153: E/WindowManager(338): Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 10:09:08.153: E/WindowManager(338): android.view.WindowLeaked: Activity com.example.evoting.HomeActivity has leaked window [email protected] that was originally added here 
09-29 10:09:08.153: E/WindowManager(338): at android.view.ViewRoot.<init>(ViewRoot.java:247) 
09-29 10:09:08.153: E/WindowManager(338): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
09-29 10:09:08.153: E/WindowManager(338): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
09-29 10:09:08.153: E/WindowManager(338): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
09-29 10:09:08.153: E/WindowManager(338): at android.app.Dialog.show(Dialog.java:241) 
09-29 10:09:08.153: E/WindowManager(338): at com.example.evoting.HomeActivity$CheckVoter.onPreExecute(HomeActivity.java:134) 
09-29 10:09:08.153: E/WindowManager(338): at android.os.AsyncTask.execute(AsyncTask.java:391) 
09-29 10:09:08.153: E/WindowManager(338): at com.example.evoting.HomeActivity$2.onClick(HomeActivity.java:74) 
09-29 10:09:08.153: E/WindowManager(338): at android.view.View.performClick(View.java:2408) 
09-29 10:09:08.153: E/WindowManager(338): at android.view.View$PerformClick.run(View.java:8816) 
09-29 10:09:08.153: E/WindowManager(338): at android.os.Handler.handleCallback(Handler.java:587) 
09-29 10:09:08.153: E/WindowManager(338): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-29 10:09:08.153: E/WindowManager(338): at android.os.Looper.loop(Looper.java:123) 
09-29 10:09:08.153: E/WindowManager(338): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-29 10:09:08.153: E/WindowManager(338): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 10:09:08.153: E/WindowManager(338): at java.lang.reflect.Method.invoke(Method.java:521) 
09-29 10:09:08.153: E/WindowManager(338): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-29 10:09:08.153: E/WindowManager(338): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-29 10:09:08.153: E/WindowManager(338): at dalvik.system.NativeStart.main(Native Method) 
+0

Java可以直接與MySQL交談。爲什麼你需要通過PHP?我對這部分有點困惑。 – Makoto

+0

作爲即時通訊非常新的android,我看到了這個部分的一些教程...只是遵循該教程。 – user1690117

回答

1

doInBackground的作品,所以你贏了」用這種方法可以更新UI

如果你正在尋找的UI更新給用戶,你需要實現onPostExecuteASyncTask顯示Dialog(或類似的東西)來通知用戶,如果發生錯誤。

您可以在任何線程中使用此塊更新UI的東西。

Runnable run_in_ui = new Runnable() { 
    @Override 
    public void run() { 
     // do your UI stuffs here 
    } 
}; 
runOnUiThread(run_in_ui); 
+0

你也可以從'doInBackground()''runOnUIThread()'來更新UI。 –

+0

可以ü請告訴我如何在我的代碼中使用runOnUIThread()... – user1690117

+0

我已經在編輯後的答案中添加了UI線程的示例代碼.. –