Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从MySQL到Android应用程序获取数据_Java_Php_Android_Mysql_Json - Fatal编程技术网

Java 从MySQL到Android应用程序获取数据

Java 从MySQL到Android应用程序获取数据,java,php,android,mysql,json,Java,Php,Android,Mysql,Json,我想使用PHP从MySQL数据库获取数据,并在Android活动中显示它。我编写代码并传递JSON数组,但有一个问题我不知道如何连接到服务器,我的所有数据库都在本地服务器上。我编码它,请告诉我哪里出了问题,这样我就可以得到准确的结果。我会非常感谢你的 my all数据库位于localhost中,未打开活动。显示错误“意外停止”:(如何获得准确结果。请指导我) 现在它给出了以下错误:(和)加载保存的详细信息 12-08 11:09:19.314: E/WindowManager(19972

我想使用PHP从MySQL数据库获取数据,并在Android活动中显示它。我编写代码并传递JSON数组,但有一个问题我不知道如何连接到服务器,我的所有数据库都在本地服务器上。我编码它,请告诉我哪里出了问题,这样我就可以得到准确的结果。我会非常感谢你的

my all数据库位于localhost中,未打开活动。显示错误“意外停止”:(如何获得准确结果。请指导我)

现在它给出了以下错误:(和)加载保存的详细信息

    12-08 11:09:19.314: E/WindowManager(19972): Activity com.example.visit.record.My_Task has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40555850 that was originally added here
12-08 11:09:19.314: E/WindowManager(19972): android.view.WindowLeaked: Activity com.example.visit.record.My_Task has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40555850 that was originally added here
12-08 11:09:19.314: E/WindowManager(19972):     at android.view.ViewRoot.<init>(ViewRoot.java:277)
12-08 11:09:19.314: E/WindowManager(19972):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-08 11:09:19.314: E/WindowManager(19972):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-08 11:09:19.314: E/WindowManager(19972):     at android.view.Window$LocalWindowManager.addView(Window.java:433)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.Dialog.show(Dialog.java:288)
12-08 11:09:19.314: E/WindowManager(19972):     at com.example.visit.record.My_Task$GetTaskDetails.onPreExecute(My_Task.java:149)
12-08 11:09:19.314: E/WindowManager(19972):     at android.os.AsyncTask.execute(AsyncTask.java:391)
12-08 11:09:19.314: E/WindowManager(19972):     at com.example.visit.record.My_Task.onCreate(My_Task.java:107)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.ActivityThread.access$1500(ActivityThread.java:132)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
12-08 11:09:19.314: E/WindowManager(19972):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-08 11:09:19.314: E/WindowManager(19972):     at android.os.Looper.loop(Looper.java:143)
12-08 11:09:19.314: E/WindowManager(19972):     at android.app.ActivityThread.main(ActivityThread.java:4268)
12-08 11:09:19.314: E/WindowManager(19972):     at java.lang.reflect.Method.invokeNative(Native Method)
12-08 11:09:19.314: E/WindowManager(19972):     at java.lang.reflect.Method.invoke(Method.java:507)
12-08 11:09:19.314: E/WindowManager(19972):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-08 11:09:19.314: E/WindowManager(19972):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-08 11:09:19.314: E/WindowManager(19972):     at dalvik.system.NativeStart.main(Native Method)
12-08 11:09:19.314:E/WindowManager(19972):Activity com.example.visit.record.My_任务泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView@40555850原来是加在这里的
12-08 11:09:19.314:E/WindowManager(19972):android.view.WindowLeaked:Activity com.example.visit.record.My_任务泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView@40555850原来是加在这里的
12-08 11:09:19.314:E/WindowManager(19972):在android.view.ViewRoot(ViewRoot.java:277)
12-08 11:09:19.314:E/WindowManager(19972):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-08 11:09:19.314:E/WindowManager(19972):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-08 11:09:19.314:E/WindowManager(19972):在android.view.Window$LocalWindowManager.addView(Window.java:433)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.Dialog.show(Dialog.java:288)
12-08 11:09:19.314:E/WindowManager(19972):在com.example.visit.record.My_Task$GetTaskDetails.onPreExecute(My_Task.java:149)
12-08 11:09:19.314:E/WindowManager(19972):在android.os.AsyncTask.execute(AsyncTask.java:391)
12-08 11:09:19.314:E/WindowManager(19972):在com.example.visit.record.My_Task.onCreate(My_Task.java:107)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.ActivityThread.access$1500(ActivityThread.java:132)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
12-08 11:09:19.314:E/WindowManager(19972):位于android.os.Handler.dispatchMessage(Handler.java:99)
12-08 11:09:19.314:E/WindowManager(19972):位于android.os.Looper.loop(Looper.java:143)
12-08 11:09:19.314:E/WindowManager(19972):在android.app.ActivityThread.main(ActivityThread.java:4268)
12-08 11:09:19.314:E/WindowManager(19972):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-08 11:09:19.314:E/WindowManager(19972):位于java.lang.reflect.Method.invoke(Method.java:507)
12-08 11:09:19.314:E/WindowManager(19972):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-08 11:09:19.314:E/WindowManager(19972):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-08 11:09:19.314:E/WindowManager(19972):在dalvik.system.NativeStart.main(本机方法)

目前,您正在尝试访问Ui元素或
doInBackground
中的
doInBackground
中的
AsyncTask
类。因为无法从
doInBackground
访问Ui元素,所以可以对upda使用
onPreExecute
onPostExecute
ting UI元素。将代码更改为,而不使用
runOnUiThread
doInBackground
中的UI元素:

      class GetProductDetails extends AsyncTask<String, String, JSONObject> {

        /**
         * Before starting background thread Show Progress Dialog
         * */

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            tDialog = new ProgressDialog(My_Task.this);
            tDialog.setMessage("Loading task details. Please wait...");
            tDialog.setIndeterminate(false);
            tDialog.setCancelable(true);
            tDialog.show();
        }
   protected JSONObject doInBackground(String... params) {

                   JSONObject my_task 
                    // Check for success tag
                    int success;
                    try {
                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("cid", cid));

                        // getting product details by making HTTP request
                        // Note that product details url will use GET request
                        JSONObject json = JSONParser.makeHttpRequest(
                                url_read_mytask, "GET", params);

                        // check your log for json response
                        Log.d("Single Task Details", json.toString());

                        // json success tag
                        success = json.getInt(TAG_SUCCESS);
                        if (success == 1) {
                            // successfully received product details
                            JSONArray my_taskObj = json
                                    .getJSONArray(TAG_MYTASK); // JSON Array

                            // get first product object from JSON Array
                            my_task = my_taskObj.getJSONObject(0);


                        }
                        else
                        {
                            // task with cid not found
                        }
                    } 
                    catch (JSONException e) {
                        e.printStackTrace();
                    }


            return my_task;
        }
        protected void onPostExecute(JSONObject my_task) {
            // dismiss the dialog once got all details

            // task with this cid found
            // Edit Text
             // display task data in EditText

             cus_name_txtbx = (EditText) findViewById(R.id.cus_name_txt);
             cus_name_txtbx.setText(my_task.getString(TAG_NAME));

             contact_no_txtbx = (EditText) findViewById(R.id.contact_no_txt);
             contact_no_txtbx.setText(my_task.getString(TAG_CONTACT));

             ticket_no_txtbx = (EditText) findViewById(R.id.ticket_no_txt);
             ticket_no_txtbx.setText(my_task.getString(TAG_TICKET));

             task_detail_txtbx = (EditText) findViewById(R.id.task_detail_txt);
             task_detail_txtbx.setText(my_task.getString(TAG_TASKDETAIL));
            tDialog.dismiss();
        }

有一件事是显而易见的。您不能从后台线程更改
UI

这是你在干什么

cus_name_txtbx = (EditText) findViewById(R.id.cus_name_txt);
                        cus_name_txtbx.setText(my_task.getString(TAG_NAME));

                        contact_no_txtbx = (EditText) findViewById(R.id.contact_no_txt);
                        contact_no_txtbx.setText(my_task.getString(TAG_CONTACT));

                        ticket_no_txtbx = (EditText) findViewById(R.id.ticket_no_txt);
                        ticket_no_txtbx.setText(my_task.getString(TAG_TICKET));

                        task_detail_txtbx = (EditText) findViewById(R.id.task_detail_txt);
                        task_detail_txtbx.setText(my_task.getString(TAG_TASKDETAIL));

GetProductDetails

@Mohsin的
doInBackground
中,对不起,我不理解“无法从后台更改UI”。我该怎么做才能获得所需的结果?等待您出现其他错误。什么是line
My_Task.java:82
?行号My_Task.onCreate(My_Task.java:82)在哪里在My_Task类中,第82行是:Attain_by_txtbx=(EditText)findViewById(R.id.Attain_by_txt);然后查看My_Task xml布局并检查您是否具有EditText或TextView@Mona:我敢肯定,在您的布局或java代码中的某个地方,您正试图将文本视图转换为EditTextThank alot n alotρцσѕρєK:)
cus_name_txtbx = (EditText) findViewById(R.id.cus_name_txt);
                        cus_name_txtbx.setText(my_task.getString(TAG_NAME));

                        contact_no_txtbx = (EditText) findViewById(R.id.contact_no_txt);
                        contact_no_txtbx.setText(my_task.getString(TAG_CONTACT));

                        ticket_no_txtbx = (EditText) findViewById(R.id.ticket_no_txt);
                        ticket_no_txtbx.setText(my_task.getString(TAG_TICKET));

                        task_detail_txtbx = (EditText) findViewById(R.id.task_detail_txt);
                        task_detail_txtbx.setText(my_task.getString(TAG_TASKDETAIL));