在Android中从MYSQL数据库查看所有信息时出错

用户名

AllProductActivity.java中,以列表形式查看数据。onItemClick上,取决于pid数据,移至下一个EditProductActivity

以下代码在eclipse中工作正常,不幸的是,Android Studio中工作时,该活动已停止。为什么我只要有人知道就不明白。

Logcat错误

请帮我。

AllProductActivity.java

  public class AllProductsActivity extends ListActivity {

        // Progress Dialog
        private ProgressDialog pDialog;

        // Creating JSON Parser object
        JSONParser jParser = new JSONParser();

        ArrayList<HashMap<String, String>> productsList;

        // url to get all products list
        private static String url_all_products = "http://192.168.1.2/android_connect/get_all_products.php";

        // JSON Node names
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_PRODUCTS = "products";
        private static final String TAG_PID = "pid";
        private static final String TAG_NAME = "name";

        // products JSONArray
        JSONArray products = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.all_products);

            // Hashmap for ListView
            productsList = new ArrayList<HashMap<String, String>>();

            // Loading products in Background Thread
            new LoadAllProducts().execute();

            // Get listview
            ListView lv = getListView();

            // on seleting single product
            // launching Edit Product Screen
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    // getting values from selected ListItem
                    String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                            .toString();

                    // Starting new intent
                    Intent in = new Intent(getApplicationContext(),
                            EditProductActivity.class);
                    // sending pid to next activity
                    in.putExtra(TAG_PID, pid);

                    // starting new activity and expecting some response back
                    startActivityForResult(in, 100);
                }
            });

        }

        // Response from Edit Product Activity
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            // if result code 100
            if (resultCode == 100) {
                // if result code 100 is received 
                // means user edited/deleted product
                // reload this screen again
                Intent intent = getIntent();
                finish();
                startActivity(intent);
            }

        }

        /**
         * Background Async Task to Load all product by making HTTP Request
         * */
        class LoadAllProducts extends AsyncTask<String, String, String> {

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

            /**
             * getting All products from url
             * */
            protected String doInBackground(String... args) {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                // getting JSON string from URL
                JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);

                // Check your log cat for JSON reponse
                Log.d("All Products: ", json.toString());

                try {
                    // Checking for SUCCESS TAG
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        // products found
                        // Getting Array of Products
                        products = json.getJSONArray(TAG_PRODUCTS);

                        // looping through All Products
                        for (int i = 0; i < products.length(); i++) {
                            JSONObject c = products.getJSONObject(i);

                            // Storing each json item in variable
                            String id = c.getString(TAG_PID);
                            String name = c.getString(TAG_NAME);

                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                            map.put(TAG_PID, id);
                            map.put(TAG_NAME, name);

                            // adding HashList to ArrayList
                            productsList.add(map);
                        }
                    } else {
                        // no products found
                        // Launch Add New product Activity
                        Intent i = new Intent(getApplicationContext(),
                                NewProductActivity.class);
                        // Closing all previous activities
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                return null;
            }

            /**
             * After completing background task Dismiss the progress dialog
             * **/
            protected void onPostExecute(String file_url) {
                // dismiss the dialog after getting all products
                pDialog.dismiss();
                // updating UI from Background Thread
                runOnUiThread(new Runnable() {
                    public void run() {
                        /**
                         * Updating parsed JSON data into ListView
                         * */
                        ListAdapter adapter = new SimpleAdapter(
                                AllProductsActivity.this, productsList,
                                R.layout.list_item, new String[] { TAG_PID,
                                        TAG_NAME},
                                new int[] { R.id.pid, R.id.name });
                        // updating listview
                        setListAdapter(adapter);
                    }
                });

            }

        }
    }

EditProductActivity.java

 public class EditProductActivity extends Activity {

    EditText txtName;
    EditText txtPrice;
    EditText txtDesc;
    EditText txtCreatedAt;
    Button btnSave;
    Button btnDelete;

    String pid;

    // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();

    // single product url
    private static final String url_product_detials = "http://192.168.1.2/android_connect/get_product_details.php";


    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PRODUCT = "product";
    private static final String TAG_PID = "pid";
    private static final String TAG_NAME = "name";
    private static final String TAG_PRICE = "price";
    private static final String TAG_DESCRIPTION = "description";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_product);

        // save button
        btnSave = (Button) findViewById(R.id.btnSave);
        btnDelete = (Button) findViewById(R.id.btnDelete);

        // getting product details from intent
        Intent i = getIntent();

        // getting product id (pid) from intent
        pid = i.getStringExtra(TAG_PID);

        // Getting complete product details in background thread
        new GetProductDetails().execute();

        // save button click event
        btnSave.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // starting background task to update product

            }
        });

        // Delete button click event
        btnDelete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // deleting product in background thread

            }
        });

    }

    /**
     * Background Async Task to Get complete product details
     */
    class GetProductDetails extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(EditProductActivity.this);
            pDialog.setMessage("Loading product details. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Getting product details in background thread
         */
        protected String doInBackground(String... params) {

            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
                    // Check for success tag
                    int success;
                    try {
                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("pid", pid));

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

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

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

                            // get first product object from JSON Array
                            JSONObject product = productObj.getJSONObject(0);

                            // product with this pid found
                            // Edit Text
                            txtName = (EditText) findViewById(R.id.inputName);
                            txtPrice = (EditText) findViewById(R.id.inputPrice);
                            txtDesc = (EditText) findViewById(R.id.inputDesc);

                            // display product data in EditText
                            txtName.setText(product.getString(TAG_NAME));
                            txtPrice.setText(product.getString(TAG_PRICE));
                            txtDesc.setText(product.getString(TAG_DESCRIPTION));

                        } else {
                            // product with pid not found
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

            return null;
        }


        /**
         * After completing background task Dismiss the progress dialog
         **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once got all details
            pDialog.dismiss();
        }
    }

}

Logcat错误:-

Process: info.androidhive.androidphpconnection, PID: 10068
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
at libcore.io.IoBridge.connect(IoBridge.java:122)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
at java.net.Socket.connect(Socket.java:884)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
at info.androidhive.androidphpconnection.JSONParser.makeHttpRequest(JSONParser.java:62)
at info.androidhive.androidphpconnection.EditProductActivity$GetProductDetails$1.run(EditProductActivity.java:131)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
巴拉特什

原因:在UI线程上调用网络东西。这条线

JSONObject json = jsonParser.makeHttpRequest(
                                url_product_detials, "GET", params);

1.runOnUiThread在UI线程上运行,您永远不会在其中创建HTTP /网络东西。
2. doInBackGround在工作线程上运行,您可以在其中创建http / networking东西。
3.无需runOnUiThread在内部调用onPreExecuteonPostExecute因为这些方法仅在UI线程上运行。

您的代码更改是这样的。

   protected String doInBackground(String... args) {
    // Check for success tag
    try {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("pid", pid));

        final JSONObject json = jsonParser.makeHttpRequest(
                url_product_detials, "GET", params);

        final int success = json.getInt(TAG_SUCCESS);
        //below code runs on UI thread.
        runOnUiThread(new Runnable() {
            public void run() {
                if (success == 1) {
                    // successfully received product details
                    try {
                        JSONArray productObj = json.getJSONArray(TAG_PRODUCT); // JSON Array

                        // get first product object from JSON Array
                        JSONObject product = productObj.getJSONObject(0);

                        // product with this pid found
                        // Edit Text
                        txtName = (EditText) findViewById(R.id.inputName);
                        txtPrice = (EditText) findViewById(R.id.inputPrice);
                        txtDesc = (EditText) findViewById(R.id.inputDesc);

                        // display product data in EditText
                        txtName.setText(product.getString(TAG_NAME));
                        txtPrice.setText(product.getString(TAG_PRICE));
                        txtDesc.setText(product.getString(TAG_DESCRIPTION));
                    } catch (JSONException e) {

                    }


                } else {
                    // product with pid not found
                }
            }
        });
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取有关数据库的信息时出错?在带有Oracle的EclipseLink中

来自分类Dev

如何查看数据库中的所有数据?

来自分类Dev

MySQL权限查看所有数据库

来自分类Dev

查看 mysql 数据库中随机间隔的时间戳(主键)中的所有间隙

来自分类Dev

如何查看数据库中的所有表?

来自分类Dev

插入JavaFX中的MYSQL数据库时出错

来自分类Dev

在Android中创建数据库时出错

来自分类Dev

尝试在android sqlite中更新数据库时出错

来自分类Dev

在访问Android中的SQLite数据库时出错

来自分类Dev

尝试在android sqlite中更新数据库时出错

来自分类Dev

尝试在Android中更新sqlite数据库时出错

来自分类Dev

在Android Studio中创建数据库时出错

来自分类Dev

当我导出MySQL数据库时,导出后会删除数据库中的所有内容吗?

来自分类Dev

导入mysql数据库时出错

来自分类Dev

导入mysql数据库时出错

来自分类Dev

导入 MySQL 数据库时出错

来自分类Dev

使用本地数据库创建listview具有复制数据库android时出错

来自分类Dev

在Android中启动活动时如何显示所有数据库记录?

来自分类Dev

删除mysql数据库中的所有外键

来自分类Dev

显示给定 MySQL 数据库中的所有表

来自分类Dev

在Android中打印SQLite数据库的所有行

来自分类Dev

Laravel-PHP Artisan Tinker:如何查看sqlite数据库中的所有表

来自分类Dev

在mongodb中创建数据库时出错(在mongo.js中不是有效的数据库名称)

来自分类Dev

在mongodb中创建数据库时出错(在mongo.js中不是有效的数据库名称)

来自分类Dev

从mysql数据库解析数据时出错

来自分类Dev

从MySQL数据库选择数据时出错

来自分类Dev

将数据插入MySQL数据库时出错

来自分类Dev

尝试在mysql数据库中加载数据时出错

来自分类Dev

如何显示MySQL中的所有数据库以及foreach数据库显示所有表

Related 相关文章

  1. 1

    获取有关数据库的信息时出错?在带有Oracle的EclipseLink中

  2. 2

    如何查看数据库中的所有数据?

  3. 3

    MySQL权限查看所有数据库

  4. 4

    查看 mysql 数据库中随机间隔的时间戳(主键)中的所有间隙

  5. 5

    如何查看数据库中的所有表?

  6. 6

    插入JavaFX中的MYSQL数据库时出错

  7. 7

    在Android中创建数据库时出错

  8. 8

    尝试在android sqlite中更新数据库时出错

  9. 9

    在访问Android中的SQLite数据库时出错

  10. 10

    尝试在android sqlite中更新数据库时出错

  11. 11

    尝试在Android中更新sqlite数据库时出错

  12. 12

    在Android Studio中创建数据库时出错

  13. 13

    当我导出MySQL数据库时,导出后会删除数据库中的所有内容吗?

  14. 14

    导入mysql数据库时出错

  15. 15

    导入mysql数据库时出错

  16. 16

    导入 MySQL 数据库时出错

  17. 17

    使用本地数据库创建listview具有复制数据库android时出错

  18. 18

    在Android中启动活动时如何显示所有数据库记录?

  19. 19

    删除mysql数据库中的所有外键

  20. 20

    显示给定 MySQL 数据库中的所有表

  21. 21

    在Android中打印SQLite数据库的所有行

  22. 22

    Laravel-PHP Artisan Tinker:如何查看sqlite数据库中的所有表

  23. 23

    在mongodb中创建数据库时出错(在mongo.js中不是有效的数据库名称)

  24. 24

    在mongodb中创建数据库时出错(在mongo.js中不是有效的数据库名称)

  25. 25

    从mysql数据库解析数据时出错

  26. 26

    从MySQL数据库选择数据时出错

  27. 27

    将数据插入MySQL数据库时出错

  28. 28

    尝试在mysql数据库中加载数据时出错

  29. 29

    如何显示MySQL中的所有数据库以及foreach数据库显示所有表

热门标签

归档