{"id":7194,"date":"2014-05-27T09:08:00","date_gmt":"2014-05-27T09:08:00","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/05\/27\/android-updating-a-listview-via-json-with-asynctask-mysql-collection-of-common-programming-errors\/"},"modified":"2014-05-27T09:08:00","modified_gmt":"2014-05-27T09:08:00","slug":"android-updating-a-listview-via-json-with-asynctask-mysql-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/05\/27\/android-updating-a-listview-via-json-with-asynctask-mysql-collection-of-common-programming-errors\/","title":{"rendered":"ANDROID Updating a ListView via JSON with AsyncTask MySQL-Collection of common programming errors"},"content":{"rendered":"<ul>\n<li><img decoding=\"async\" src=\"http:\/\/i.stack.imgur.com\/fBUj8.jpg?s=32&amp;g=1\" \/><br \/>\njbihan<\/p>\n<p>Immersed in the development of my program, I encounter an error that seems to me not really speaking.<\/p>\n<p>So here&#8217;s my logcat in the order and the java code:<\/p>\n<p>When I click on the item in my listview it should return me the contact information for the update.<\/p>\n<pre><code>public class  MajContactActivity extends Activity {\n\nEditText txtNom;\nEditText txtPrenom;\nEditText txtNummobile;\nEditText txtNumfixe;\nEditText txtEmail;\nEditText txtAdresse;\nEditText txtProfession;\n\nButton btnSav;\nButton btnSup;\n\nString idCONTACT;\n\n\/\/ Progress Dialog\nprivate ProgressDialog pDialog;\n\n\/\/ JSON parser class\nJSONParser jsonParser = new JSONParser();\n\n\/\/ single contact url\nprivate static final String url_detail_contact = \"http:\/\/10.0.2.2\/contactCloud\/detail_contact.php\";\n\n\/\/ url to update contact\nprivate static final String url_update_contact = \"http:\/\/10.0.2.2\/contactCloud\/update_contact.php\";\n\n\/\/ url to delete contact\nprivate static final String url_delete_contact = \"http:\/\/10.0.2.2\/contactCloud\/delete_contact.php\";\n\n\/\/ JSON Node names\nprivate static final String TAG_SUCCESS = \"success\";\nprivate static final String TAG_CONTACT = \"personne\";\nprivate static final String TAG_IDCONTACT = \"idCONTACT\";\n\nprivate static final String TAG_NOM = \"nom\";\nprivate static final String TAG_PRENOM = \"prenom\";\nprivate static final String TAG_NUMMOBILE = \"numero_mobile\";\nprivate static final String TAG_NUMFIXE = \"numero_fixe\";\nprivate static final String TAG_EMAIL = \"email\";\nprivate static final String TAG_ADRESSE = \"adresse\";\nprivate static final String TAG_PROFESSION = \"profession\";\n\n@Override\npublic void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.maj_contact);\n\n    \/\/ save button\n    btnSav = (Button) findViewById(R.id.btnSav);\n    btnSup = (Button) findViewById(R.id.btnSup);\n\n    \/\/ getting contact details from intent\n    Intent i = getIntent();\n\n    \/\/ getting contact id (idCONTACT) from intent\n    idCONTACT = i.getStringExtra(TAG_IDCONTACT);\n\n    \/\/ Getting complete contact details in background thread\n    new GetDetailContact().execute();\n\n    \/\/ save button click event\n    btnSav.setOnClickListener(new View.OnClickListener() {\n\n        @Override\n        public void onClick(View arg0) {\n            \/\/ starting background task to update contact\n            new SavDetailContact().execute();\n        }\n    });\n\n    \/\/ Delete button click event\n    btnSup.setOnClickListener(new View.OnClickListener() {\n\n        @Override\n        public void onClick(View arg0) {\n            \/\/ deleting contact in background thread\n            new SupContact().execute();\n        }\n    });\n\n}\n\n\/**\n * Background Async Task to Get complete contact details\n * *\/\nclass GetDetailContact extends AsyncTask {\n\n    \/**\n     * Before starting background thread Show Progress Dialog\n     * *\/\n    @Override\n    protected void onPreExecute() {\n        super.onPreExecute();\n        pDialog = new ProgressDialog(MajContactActivity.this);\n        pDialog.setMessage(\"Chargement du contact. Veuillez patientez...\");\n        pDialog.setIndeterminate(false);\n        pDialog.setCancelable(true);\n        pDialog.show();\n    }\n\n    \/**\n     * Getting contact details in background thread\n     * *\/\n    protected String doInBackground(String... params) {\n\n                \/\/ Check for success tag\n                int success;\n                try {\n                    \/\/ Building Parameters\n                    List params1 = new ArrayList();\n                    params1.add(new BasicNameValuePair(\"idCONTACT\", idCONTACT));\n\n                    \/\/ getting contact details by making HTTP request\n                    \/\/ Note that contact details url will use GET request\n                    JSONObject json = jsonParser.makeHttpRequest(url_detail_contact, \"GET\", params1);\n\n                    \/\/ check your log for json response\n                    Log.d(\"Detail contact unique\", json.toString());\n\n                    \/\/ json success tag\n                    success = json.getInt(TAG_SUCCESS);\n                    if (success == 1) {\n                        \/\/ successfully received contact details\n                        JSONArray personneObj = json.getJSONArray(TAG_CONTACT); \/\/ JSON Array\n\n                        \/\/ get first contact object from JSON Array\n                        JSONObject personne = personneObj.getJSONObject(0);\n\n                        \/\/ contact with this idCONTACT found\n                        \/\/ Edit Text\n                        txtNom = (EditText) findViewById(R.id.inputNom);\n                        txtPrenom = (EditText) findViewById(R.id.inputPrenom);\n                        txtNummobile = (EditText) findViewById(R.id.inputNumMobile);\n                        txtNumfixe = (EditText) findViewById(R.id.inputNumFixe);\n                        txtEmail = (EditText) findViewById(R.id.inputEmail);\n                        txtAdresse = (EditText) findViewById(R.id.inputAdresse);\n                        txtProfession = (EditText) findViewById(R.id.inputProfession);\n\n                        \/\/ display contact data in EditText\n                        txtNom.setText(personne.getString(TAG_NOM));\n                        txtPrenom.setText(personne.getString(TAG_PRENOM));\n                        txtNummobile.setText(personne.getString(TAG_NUMMOBILE));\n                        txtNumfixe.setText(personne.getString(TAG_NUMFIXE));\n                        txtEmail.setText(personne.getString(TAG_EMAIL));\n                        txtAdresse.setText(personne.getString(TAG_ADRESSE));\n                        txtProfession.setText(personne.getString(TAG_PROFESSION));\n\n                    }else{\n                        \/\/ contact with idCONTACT not found\n                    }\n                } catch (JSONException e) {\n                    e.printStackTrace();\n                }\n        return null;\n    }\n    \/**\n     * After completing background task Dismiss the progress dialog\n     * **\/\n    protected void onPostExecute(String file_url) {\n        \/\/ dismiss the dialog once got all details\n        pDialog.dismiss();\n    }\n}\n\n\/**\n * Background Async Task to  Save contact Details\n * *\/\nclass SavDetailContact extends AsyncTask {\n\n    \/**\n     * Before starting background thread Show Progress Dialog\n     * *\/\n    @Override\n    protected void onPreExecute() {\n        super.onPreExecute();\n        pDialog = new ProgressDialog(MajContactActivity.this);\n        pDialog.setMessage(\"Sauvegarde du contact ...\");\n        pDialog.setIndeterminate(false);\n        pDialog.setCancelable(true);\n        pDialog.show();\n    }\n\n    \/**\n     * Saving contact\n     * *\/\n    protected String doInBackground(String... args) {\n\n        \/\/ getting updated data from EditTexts\n        String nom = txtNom.getText().toString();\n        String prenom = txtPrenom.getText().toString();\n        String numero_mobile = txtNummobile.getText().toString();\n        String numero_fixe = txtNumfixe.getText().toString();\n        String email = txtEmail.getText().toString();\n        String adresse = txtAdresse.getText().toString();\n        String profession = txtProfession.getText().toString();\n\n        \/\/ Building Parameters\n        List params = new ArrayList();\n\n        params.add(new BasicNameValuePair(TAG_IDCONTACT, idCONTACT));\n        params.add(new BasicNameValuePair(TAG_NOM, nom));\n        params.add(new BasicNameValuePair(TAG_PRENOM, prenom));\n        params.add(new BasicNameValuePair(TAG_NUMMOBILE, numero_mobile));\n        params.add(new BasicNameValuePair(TAG_NUMFIXE, numero_fixe));\n        params.add(new BasicNameValuePair(TAG_EMAIL, email));\n        params.add(new BasicNameValuePair(TAG_ADRESSE, adresse));\n        params.add(new BasicNameValuePair(TAG_PROFESSION, profession));\n\n        \/\/ sending modified data through http request\n        \/\/ Notice that update contact url accepts POST method\n        JSONObject json = jsonParser.makeHttpRequest(url_update_contact,\"POST\", params);\n\n        \/\/ check json success tag\n        try {\n            int success = json.getInt(TAG_SUCCESS);\n\n            if (success == 1) {\n                \/\/ successfully updated\n                Intent i = getIntent();\n                \/\/ send result code 100 to notify about contact update\n                setResult(100, i);\n                finish();\n            } else {\n                \/\/ failed to update contact\n            }\n        } catch (JSONException e) {\n            e.printStackTrace();\n        }\n\n        return null;\n    }\n\n    \/**\n     * After completing background task Dismiss the progress dialog\n     * **\/\n    protected void onPostExecute(String file_url) {\n        \/\/ dismiss the dialog once contact uupdated\n        pDialog.dismiss();\n    }\n}\n\n\/*****************************************************************\n * Background Async Task to Delete Product\n * *\/\nclass SupContact extends AsyncTask {\n\n    \/**\n     * Before starting background thread Show Progress Dialog\n     * *\/\n    @Override\n    protected void onPreExecute() {\n        super.onPreExecute();\n        pDialog = new ProgressDialog(MajContactActivity.this);\n        pDialog.setMessage(\"Suppression du contact...\");\n        pDialog.setIndeterminate(false);\n        pDialog.setCancelable(true);\n        pDialog.show();\n    }\n\n    \/**\n     * Deleting contact\n     * *\/\n    protected String doInBackground(String... args) {\n\n        \/\/ Check for success tag\n        int success;\n        try {\n            \/\/ Building Parameters\n            List params = new ArrayList();\n            params.add(new BasicNameValuePair(\"idCONTACT\", idCONTACT));\n\n            \/\/ getting contact details by making HTTP request\n            JSONObject json = jsonParser.makeHttpRequest(url_delete_contact, \"POST\", params);\n\n            \/\/ check your log for json response\n            Log.d(\"Suppression du contact\", json.toString());\n\n            \/\/ json success tag\n            success = json.getInt(TAG_SUCCESS);\n            if (success == 1) {\n                \/\/ contact successfully deleted\n                \/\/ notify previous activity by sending code 100\n                Intent i = getIntent();\n                \/\/ send result code 100 to notify about contact deletion\n                setResult(100, i);\n                finish();\n            }\n        } catch (JSONException e) {\n            e.printStackTrace();\n        }\n\n        return null;\n    }\n\n    \/**\n     * After completing background task Dismiss the progress dialog\n     * **\/\n    protected void onPostExecute(String file_url) {\n        \/\/ dismiss the dialog once contact deleted\n        pDialog.dismiss();\n\n    }\n\n}\n} \n\n\n12-05 19:46:28.287: E\/AndroidRuntime(1161): FATAL EXCEPTION: AsyncTask #\n212-05 19:46:28.287: E\/AndroidRuntime(1161): java.lang.RuntimeException: An error occured while executing doInBackground()\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.os.AsyncTask$3.done(AsyncTask.java:299)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.lang.Thread.run(Thread.java:841)\n12-05 19:46:28.287: E\/AndroidRuntime(1161): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:5908)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:869)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.view.ViewGroup.invalidateChild(ViewGroup.java:4253)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.view.View.invalidate(View.java:10482)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.invalidateRegion(TextView.java:4591)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.invalidateCursor(TextView.java:4534)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.spanChange(TextView.java:7412)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:9103)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:979)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:688)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:588)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.Selection.setSelection(Selection.java:76)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.Selection.setSelection(Selection.java:87)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.text.method.ArrowKeyMovementMethod.initialize(ArrowKeyMovementMethod.java:302)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.setText(TextView.java:3759)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.setText(TextView.java:3629)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.EditText.setText(EditText.java:80)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.widget.TextView.setText(TextView.java:3604)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at fr.paris8.contactcloud.MajContactActivity$GetDetailContact.doInBackground(MajContactActivity.java:162)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at fr.paris8.contactcloud.MajContactActivity$GetDetailContact.doInBackground(MajContactActivity.java:1)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at android.os.AsyncTask$2.call(AsyncTask.java:287)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)\n12-05 19:46:28.287: E\/AndroidRuntime(1161):     ... 4 more\n\n12-05 19:46:36.289: E\/WindowManager(1161): Activity fr.paris8.contactcloud.MajContactActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41803700 V.E..... R.....ID 0,0-480,144} that was originally added here\n12-05 19:46:36.289: E\/WindowManager(1161): android.view.WindowLeaked: Activity fr.paris8.contactcloud.MajContactActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41803700 V.E..... R.....ID 0,0-480,144} that was originally added here\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.view.ViewRootImpl.(ViewRootImpl.java:345)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.Dialog.show(Dialog.java:281)\n12-05 19:46:36.289: E\/WindowManager(1161):  at fr.paris8.contactcloud.MajContactActivity$GetDetailContact.onPreExecute(MajContactActivity.java:120)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.os.AsyncTask.execute(AsyncTask.java:534)\n12-05 19:46:36.289: E\/WindowManager(1161):  at fr.paris8.contactcloud.MajContactActivity.onCreate(MajContactActivity.java:81)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.Activity.performCreate(Activity.java:5133)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.ActivityThread.access$600(ActivityThread.java:141)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.os.Handler.dispatchMessage(Handler.java:99)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.os.Looper.loop(Looper.java:137)\n12-05 19:46:36.289: E\/WindowManager(1161):  at android.app.ActivityThread.main(ActivityThread.java:5103)\n12-05 19:46:36.289: E\/WindowManager(1161):  at java.lang.reflect.Method.invokeNative(Native Method)\n12-05 19:46:36.289: E\/WindowManager(1161):  at java.lang.reflect.Method.invoke(Method.java:525)\n12-05 19:46:36.289: E\/WindowManager(1161):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)\n12-05 19:46:36.289: E\/WindowManager(1161):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)\n12-05 19:46:36.289: E\/WindowManager(1161):  at dalvik.system.NativeStart.main(Native Method)\n<\/code><\/pre>\n<p>I do not see or just wrong?<\/p>\n<p>thank you for the help!<\/p>\n<\/li>\n<li><img decoding=\"async\" src=\"http:\/\/www.gravatar.com\/avatar\/0316825bd2450dbf77764463ecd508ce?s=32&amp;d=identicon&amp;r=PG&amp;f=1\" \/><br \/>\nPouti<\/p>\n<p>Thank you for your quick response,<\/p>\n<p>However I did not understand, I see you&#8217;ve moved EditText in OnCreate method, and display the data of the contact in the OnPostExecute method.<\/p>\n<p>I do not understand what you mean here, I must display a message<\/p>\n<pre><code>               \/\/ json success tag\n                success = json.getInt(TAG_SUCCESS);\n                if (success == 1) {\n                    \/\/ successfully received contact details\n                    JSONArray personneObj = json.getJSONArray(TAG_CONTACT); \/\/ JSON Array\n\n                    \/\/ get first contact object from JSON Array\n                    JSONObject personne = personneObj.getJSONObject(0);\n\n                    \/\/ contact with this idCONTACT found\n\n\n\n                }else{\n                    \/\/ contact with idCONTACT not found\n                }\n<\/code><\/pre>\n<p>Then in OnPostExecute tell me that there is a mistake, because the person is not variable defines global.<\/p>\n<pre><code>protected void onPostExecute(String file_url) {\n    \/\/ dismiss the dialog once got all details\n    pDialog.dismiss();\n\n                   \/\/ display contact data in EditText\n                    txtNom.setText(personne.getString(TAG_NOM));\n                    txtPrenom.setText(personne.getString(TAG_PRENOM));\n                    txtNummobile.setText(personne.getString(TAG_NUMMOBILE));\n                    txtNumfixe.setText(personne.getString(TAG_NUMFIXE));\n                    txtEmail.setText(personne.getString(TAG_EMAIL));\n                    txtAdresse.setText(personne.getString(TAG_ADRESSE));\n                    txtProfession.setText(personne.getString(TAG_PROFESSION));\n}\n<\/code><\/pre>\n<p>It&#8217;s just at this level, or I&#8217;m stuck.<\/p>\n<p>Thank you very much for help.<\/p>\n<\/li>\n<li><img decoding=\"async\" src=\"http:\/\/www.gravatar.com\/avatar\/2f9e56809c226d8da0541f7eb6a4029d?s=32&amp;d=identicon&amp;r=PG\" \/><br \/>\nHariharan<\/p>\n<p>Try this..<\/p>\n<p>You cannot do the initialize inside <code>doInBackground<\/code> you need to with in the <code>onCreate<\/code>. Same like that you cannot set the text inside the <code>doInBackground<\/code> need to in <code>onPostExecute<\/code>.<\/p>\n<pre><code>@Override\npublic void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.maj_contact);\n\n    \/\/ save button\n    btnSav = (Button) findViewById(R.id.btnSav);\n    btnSup = (Button) findViewById(R.id.btnSup);\n\n    \/\/ Edit Text\n                        txtNom = (EditText) findViewById(R.id.inputNom);\n                        txtPrenom = (EditText) findViewById(R.id.inputPrenom);\n                        txtNummobile = (EditText) findViewById(R.id.inputNumMobile);\n                        txtNumfixe = (EditText) findViewById(R.id.inputNumFixe);\n                        txtEmail = (EditText) findViewById(R.id.inputEmail);\n                        txtAdresse = (EditText) findViewById(R.id.inputAdresse);\n                        txtProfession = (EditText) findViewById(R.id.inputProfession);\n\n\n    \/\/ getting contact details from intent\n    Intent i = getIntent();\n\n    \/\/ getting contact id (idCONTACT) from intent\n    idCONTACT = i.getStringExtra(TAG_IDCONTACT);\n\n    \/\/ Getting complete contact details in background thread\n    new GetDetailContact().execute();\n\n    \/\/ save button click event\n    btnSav.setOnClickListener(new View.OnClickListener() {\n\n        @Override\n        public void onClick(View arg0) {\n            \/\/ starting background task to update contact\n            new SavDetailContact().execute();\n        }\n    });\n\n    \/\/ Delete button click event\n    btnSup.setOnClickListener(new View.OnClickListener() {\n\n        @Override\n        public void onClick(View arg0) {\n            \/\/ deleting contact in background thread\n            new SupContact().execute();\n        }\n    });\n\n}\n\n\/**\n * Background Async Task to Get complete contact details\n * *\/\nclass GetDetailContact extends AsyncTask {\n\n    \/**\n     * Before starting background thread Show Progress Dialog\n     * *\/\n    @Override\n    protected void onPreExecute() {\n        super.onPreExecute();\n        pDialog = new ProgressDialog(MajContactActivity.this);\n        pDialog.setMessage(\"Chargement du contact. Veuillez patientez...\");\n        pDialog.setIndeterminate(false);\n        pDialog.setCancelable(true);\n        pDialog.show();\n    }\n\n    \/**\n     * Getting contact details in background thread\n     * *\/\n    protected String doInBackground(String... params) {\n\n                \/\/ Check for success tag\n                int success;\n                try {\n                    \/\/ Building Parameters\n                    List params1 = new ArrayList();\n                    params1.add(new BasicNameValuePair(\"idCONTACT\", idCONTACT));\n\n                    \/\/ getting contact details by making HTTP request\n                    \/\/ Note that contact details url will use GET request\n                    JSONObject json = jsonParser.makeHttpRequest(url_detail_contact, \"GET\", params1);\n\n                    \/\/ check your log for json response\n                    Log.d(\"Detail contact unique\", json.toString());\n\n                    \/\/ json success tag\n                    success = json.getInt(TAG_SUCCESS);\n                    if (success == 1) {\n                        \/\/ successfully received contact details\n                        JSONArray personneObj = json.getJSONArray(TAG_CONTACT); \/\/ JSON Array\n\n                        \/\/ get first contact object from JSON Array\n                        JSONObject personne = personneObj.getJSONObject(0);\n\n                        \/\/ contact with this idCONTACT found\n\n\n\n                    }else{\n                        \/\/ contact with idCONTACT not found\n                    }\n                } catch (JSONException e) {\n                    e.printStackTrace();\n                }\n        return null;\n    }\n    \/**\n     * After completing background task Dismiss the progress dialog\n     * **\/\n    protected void onPostExecute(String file_url) {\n        \/\/ dismiss the dialog once got all details\n        pDialog.dismiss();\n\n                       \/\/ display contact data in EditText\n                        txtNom.setText(personne.getString(TAG_NOM));\n                        txtPrenom.setText(personne.getString(TAG_PRENOM));\n                        txtNummobile.setText(personne.getString(TAG_NUMMOBILE));\n                        txtNumfixe.setText(personne.getString(TAG_NUMFIXE));\n                        txtEmail.setText(personne.getString(TAG_EMAIL));\n                        txtAdresse.setText(personne.getString(TAG_ADRESSE));\n                        txtProfession.setText(personne.getString(TAG_PROFESSION));\n    }\n}\n\n\/**\n * Background Async Task to  Save contact Details\n * *\/\nclass SavDetailContact extends AsyncTask {\n\n    \/**\n     * Before starting background thread Show Progress Dialog\n     * *\/\n    @Override\n    protected void onPreExecute() {\n        super.onPreExecute();\n        pDialog = new ProgressDialog(MajContactActivity.this);\n        pDialog.setMessage(\"Sauvegarde du contact ...\");\n        pDialog.setIndeterminate(false);\n        pDialog.setCancelable(true);\n        pDialog.show();\n    }\n\n    \/**\n     * Saving contact\n     * *\/\n    protected String doInBackground(String... args) {\n\n        \/\/ getting updated data from EditTexts\n        String nom = txtNom.getText().toString();\n        String prenom = txtPrenom.getText().toString();\n        String numero_mobile = txtNummobile.getText().toString();\n        String numero_fixe = txtNumfixe.getText().toString();\n        String email = txtEmail.getText().toString();\n        String adresse = txtAdresse.getText().toString();\n        String profession = txtProfession.getText().toString();\n\n        \/\/ Building Parameters\n        List params = new ArrayList();\n\n        params.add(new BasicNameValuePair(TAG_IDCONTACT, idCONTACT));\n        params.add(new BasicNameValuePair(TAG_NOM, nom));\n        params.add(new BasicNameValuePair(TAG_PRENOM, prenom));\n        params.add(new BasicNameValuePair(TAG_NUMMOBILE, numero_mobile));\n        params.add(new BasicNameValuePair(TAG_NUMFIXE, numero_fixe));\n        params.add(new BasicNameValuePair(TAG_EMAIL, email));\n        params.add(new BasicNameValuePair(TAG_ADRESSE, adresse));\n        params.add(new BasicNameValuePair(TAG_PROFESSION, profession));\n\n        \/\/ sending modified data through http request\n        \/\/ Notice that update contact url accepts POST method\n        JSONObject json = jsonParser.makeHttpRequest(url_update_contact,\"POST\", params);\n\n        \/\/ check json success tag\n        try {\n            int success = json.getInt(TAG_SUCCESS);\n\n\n        } catch (JSONException e) {\n            e.printStackTrace();\n        }\n\n        return null;\n    }\n\n    \/**\n     * After completing background task Dismiss the progress dialog\n     * **\/\n    protected void onPostExecute(String file_url) {\n        \/\/ dismiss the dialog once contact uupdated\n        pDialog.dismiss();\n\n           if (success == 1) {\n                \/\/ successfully updated\n                Intent i = getIntent();\n                \/\/ send result code 100 to notify about contact update\n                setResult(100, i);\n                finish();\n            } else {\n                \/\/ failed to update contact\n            }\n    }\n}\n<\/code><\/pre>\n<p>EDIT :<\/p>\n<pre><code>class GetDetailContact extends AsyncTask {\n\n        \/**\n         * Before starting background thread Show Progress Dialog\n         * *\/\n        @Override\n        protected void onPreExecute() {\n            super.onPreExecute();\n            pDialog = new ProgressDialog(MajContactActivity.this);\n            pDialog.setMessage(\"Chargement du contact. Veuillez patientez...\");\n            pDialog.setIndeterminate(false);\n            pDialog.setCancelable(true);\n            pDialog.show();\n        }\n\n        \/**\n         * Getting contact details in background thread\n         * *\/\n        protected JSONObject doInBackground(String... params) {\n\n                    \/\/ Check for success tag\n                    int success;\n                    try {\n                        \/\/ Building Parameters\n                        List params1 = new ArrayList();\n                        params1.add(new BasicNameValuePair(\"idCONTACT\", idCONTACT));\n\n                        \/\/ getting contact details by making HTTP request\n                        \/\/ Note that contact details url will use GET request\n                        JSONObject json = jsonParser.makeHttpRequest(url_detail_contact, \"GET\", params1);\n\n                        \/\/ check your log for json response\n                        Log.d(\"Detail contact unique\", json.toString());\n\n                        \/\/ json success tag\n                        success = json.getInt(TAG_SUCCESS);\n                        if (success == 1) {\n                            \/\/ successfully received contact details\n                            JSONArray personneObj = json.getJSONArray(TAG_CONTACT); \/\/ JSON Array\n\n                            \/\/ get first contact object from JSON Array\n                            JSONObject personne = personneObj.getJSONObject(0);\n\n                            \/\/ contact with this idCONTACT found\n\n                           return personne;\n\n                        }else{\n                            \/\/ contact with idCONTACT not found\n                        }\n                    } catch (JSONException e) {\n                        e.printStackTrace();\n                    }\n            return null;\n        }\n        \/**\n         * After completing background task Dismiss the progress dialog\n         * **\/\n        protected void onPostExecute(JSONObject personne) {\n            \/\/ dismiss the dialog once got all details\n            pDialog.dismiss();\n\n                           \/\/ display contact data in EditText\n                            txtNom.setText(personne.getString(TAG_NOM));\n                            txtPrenom.setText(personne.getString(TAG_PRENOM));\n                            txtNummobile.setText(personne.getString(TAG_NUMMOBILE));\n                            txtNumfixe.setText(personne.getString(TAG_NUMFIXE));\n                            txtEmail.setText(personne.getString(TAG_EMAIL));\n                            txtAdresse.setText(personne.getString(TAG_ADRESSE));\n                            txtProfession.setText(personne.getString(TAG_PROFESSION));\n        }\n    }\n<\/code><\/pre>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>jbihan Immersed in the development of my program, I encounter an error that seems to me not really speaking. So here&#8217;s my logcat in the order and the java code: When I click on the item in my listview it should return me the contact information for the update. public class MajContactActivity extends Activity { [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7194","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/7194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=7194"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/7194\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=7194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=7194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=7194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}