2013-10-23 17 views
0

我的活動無法將數據從Mysql顯示到Edittext。無法將數據從Mysql傳遞到EditText

當我選擇在我的項目

在我的logcat

一個數據,它只是錯誤,我可以接收單數據,但不能進入我的EDITTEXT。

這裏是我的源:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.createperson); 

     firstname = (EditText) findViewById(R.id.editcreatefirstname); 
     middlename = (EditText) findViewById(R.id.editmiddlename); 
     lastname = (EditText) findViewById(R.id.editlastname); 
     alias = (EditText) findViewById(R.id.editaliasname); 
     gender = (EditText) findViewById(R.id.editgender); 
     city = (EditText) findViewById(R.id.editcity); 
     date = (EditText) findViewById(R.id.editdate); 
     month = (EditText) findViewById(R.id.editmonth); 
     year = (EditText) findViewById(R.id.edityear); 

     noID = getIntent().getStringExtra(TAG_PID); 

      new LoadAllProducts().execute(); 
    } 

    class LoadAllProducts extends AsyncTask<String, String, String>{ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(SingleView.this); 
      pDialog.setMessage("Loading products. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 
     @Override 
     protected String doInBackground(String...param) { 

      try { 
       List<NameValuePair>params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("ID_Person", noID)); 
       String url_product_detials = "http://10.0.2.2/getDetails.php?ID_Person="+noID; 
       JSONObject json = jParser.makeHttpRequest(
         url_product_detials, "GET", params); 
       Log.d("Single Person Details", json.toString()); 
       JSONArray productObj = json 
         .getJSONArray(TAG_PRODUCT); 
       for (int i = 0; i < productObj.length(); i++) { 

        JSONObject person = productObj.getJSONObject(i); 


        String first = person.getString("First_Name_Person"); 
        String middle = person.getString("Middle_Name_Person"); 
        String last = person.getString("Last_Name_Person"); 
        String al = person.getString("Alias_Person"); 
        String gen = person.getString("Gender_Person"); 
        String cty = person.getString("City_Birth_Person"); 
        String dte = person.getString("Date_Birth_Person"); 
        String mth = person.getString("Month_Birth_Person"); 
        String yr = person.getString("Year_Birth_Person"); 

        firstname.setText(first); 
        middlename.setText(middle); 
        lastname.setText(last); 
        alias.setText(al); 
        gender.setText(gen); 
        city.setText(cty); 
        date.setText(dte); 
        month.setText(mth); 
        year.setText(yr); 


       } 


      } catch (JSONException e) { 

       e.printStackTrace(); 
      } 
      return null; 

     } 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once got all details 
      pDialog.dismiss(); 
     } 

    } 

} 

這裏是我的logcat錯誤

10-23 02:28:51.929: E/AndroidRuntime(1362): FATAL EXCEPTION: AsyncTask #2 
10-23 02:28:51.929: E/AndroidRuntime(1362): java.lang.RuntimeException: An error occured while executing doInBackground() 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.lang.Thread.run(Thread.java:856) 
10-23 02:28:51.929: E/AndroidRuntime(1362): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4746) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:854) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.view.ViewGroup.invalidateChild(ViewGroup.java:4075) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.view.View.invalidate(View.java:10329) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.invalidateRegion(TextView.java:4524) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.invalidateCursor(TextView.java:4467) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.spanChange(TextView.java:7325) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:8907) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:979) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:688) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:588) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.Selection.setSelection(Selection.java:76) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.Selection.setSelection(Selection.java:87) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.text.method.ArrowKeyMovementMethod.initialize(ArrowKeyMovementMethod.java:302) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.setText(TextView.java:3684) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.setText(TextView.java:3554) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.EditText.setText(EditText.java:80) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.widget.TextView.setText(TextView.java:3529) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at com.sd.tri.SingleView$LoadAllProducts.doInBackground(SingleView.java:114) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at com.sd.tri.SingleView$LoadAllProducts.doInBackground(SingleView.java:1) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
10-23 02:28:51.929: E/AndroidRuntime(1362):  ... 4 more 
10-23 02:28:55.769: E/WindowManager(1362): Activity com.sd.tri.SingleView has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40d5f0b8 V.E..... R.....ID 0,0-320,96} that was originally added here 
10-23 02:28:55.769: E/WindowManager(1362): android.view.WindowLeaked: Activity com.sd.tri.SingleView has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40d5f0b8 V.E..... R.....ID 0,0-320,96} that was originally added here 
10-23 02:28:55.769: E/WindowManager(1362): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354) 
10-23 02:28:55.769: E/WindowManager(1362): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216) 
10-23 02:28:55.769: E/WindowManager(1362): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.Dialog.show(Dialog.java:281) 
10-23 02:28:55.769: E/WindowManager(1362): at com.sd.tri.SingleView$LoadAllProducts.onPreExecute(SingleView.java:75) 
10-23 02:28:55.769: E/WindowManager(1362): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
10-23 02:28:55.769: E/WindowManager(1362): at android.os.AsyncTask.execute(AsyncTask.java:534) 
10-23 02:28:55.769: E/WindowManager(1362): at com.sd.tri.SingleView.onCreate(SingleView.java:64) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.Activity.performCreate(Activity.java:5104) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
10-23 02:28:55.769: E/WindowManager(1362): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-23 02:28:55.769: E/WindowManager(1362): at android.os.Looper.loop(Looper.java:137) 
10-23 02:28:55.769: E/WindowManager(1362): at android.app.ActivityThread.main(ActivityThread.java:5041) 
10-23 02:28:55.769: E/WindowManager(1362): at java.lang.reflect.Method.invokeNative(Native Method) 
10-23 02:28:55.769: E/WindowManager(1362): at java.lang.reflect.Method.invoke(Method.java:511) 
10-23 02:28:55.769: E/WindowManager(1362): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
10-23 02:28:55.769: E/WindowManager(1362): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
10-23 02:28:55.769: E/WindowManager(1362): at dalvik.system.NativeStart.main(Native Method) 

請人幫助我..

+0

您正在從後臺線程('doInBackground'方法)更新UI。你應該這樣做'onPostExecute' –

+0

@juraganerka你好你解決了這個問題 – meda

回答

0

在你AsyncTask類,你在doInBackground執行網絡活動但是當你需要更新用戶界面時,應該在onPostExecute方法中完成。

class LoadAllProducts extends AsyncTask<String, String, JSONArray>{ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(SingleView.this); 
      pDialog.setMessage("Loading products. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 
     @Override 
     protected JSONArray doInBackground(String...param) { 
      JSONArray productObj = new JSONArray(); 
      try { 
       List<NameValuePair>params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("ID_Person", noID)); 
       String url_product_detials = "http://10.0.2.2/getDetails.php?ID_Person="+noID; 
       JSONObject json = jParser.makeHttpRequest(
         url_product_detials, "GET", params); 
       Log.d("Single Person Details", json.toString()); 
       productObj = json.getJSONArray(TAG_PRODUCT); 

      } catch (JSONException e) { 

       e.printStackTrace(); 
      } 
      return productObj; 

     } 
     protected void onPostExecute(JSONArray productObj) { 

        for (int i = 0; i < productObj.length(); i++) { 

        JSONObject person = productObj.getJSONObject(i); 


        String first = person.getString("First_Name_Person"); 
        String middle = person.getString("Middle_Name_Person"); 
        String last = person.getString("Last_Name_Person"); 
        String al = person.getString("Alias_Person"); 
        String gen = person.getString("Gender_Person"); 
        String cty = person.getString("City_Birth_Person"); 
        String dte = person.getString("Date_Birth_Person"); 
        String mth = person.getString("Month_Birth_Person"); 
        String yr = person.getString("Year_Birth_Person"); 

        firstname.setText(first); 
        middlename.setText(middle); 
        lastname.setText(last); 
        alias.setText(al); 
        gender.setText(gen); 
        city.setText(cty); 
        date.setText(dte); 
        month.setText(mth); 
        year.setText(yr); 


       } 

       } 
      // dismiss the dialog once got all details 
      pDialog.dismiss(); 

     } 

    } 
+0

謝謝@media。這個對我有用。和所有人.. – Juraganerka

+0

@Juraganerka請接受這個問題,如果它幫助你謝謝 – meda

0

首先,你可以看到如下的記錄: 只有創建視圖層次可以觸摸其觀點

這意味着你改變你在另一個線程UI視圖原來的線程,這是不允許的。

相關問題