-1

在我的位置改变后,我需要指导来上课。谁能帮助我。我认为问题在于以下代码:

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

这是整个代码:

(当我的位置发生变化时,我在这里设置了一些条件,这也是我必须在下面调用下一个类的部分。)

class myLocationlistener implements LocationListener {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                double pLong = location.getLongitude();
                double pLat = location.getLatitude();
                textLat.setText(Double.toString(pLat));
                textLong.setText(Double.toString(pLong));

                Intent i = new Intent(getApplicationContext(), CreateNewProduct.class);
                startActivity(i);
            }
        }
        @Override
        public void onProviderDisabled(String provider) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    }

(要调用的类)

class CreateNewProduct extends AsyncTask<String, String, String> {
        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Sample.this);
            pDialog.setMessage("Sending Location");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
        /**
         * Creating product
         * */
        protected String doInBackground(String... args) {
            String latitude = textLong.getText().toString();
            String longitude = textLat.getText().toString();
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("latitude", latitude));
            params.add(new BasicNameValuePair("longitude", longitude));
            // getting JSON Object
            // Note that create product url accepts POST method
            JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                    "POST", params);
            // check log cat fro response
            Log.d("Create Response", json.toString());
            // check for success tag
            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Toast.makeText(getBaseContext(), "Success",
                            Toast.LENGTH_SHORT).show();
                } else {
                    // failed to create product
                }
            } 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 done
            pDialog.dismiss();
        }
    }
4

3 回答 3

2

您应该执行 aynctask 作为

new CreateNewProduct().execute();

因为 startActivity() 顾名思义只是用于启动活动

于 2013-01-22T09:11:38.000 回答
2

CreateNewProduct 类不是 Activity。您无法使用 Intent 和 startActivity() 方法启动它。最好的解决方案是创建此类的对象并从此类中调用方法。

代码示例:

@Override

        public void onLocationChanged(Location location) {

            if (location != null) {

                double pLong = location.getLongitude();

                double pLat = location.getLatitude();

                textLat.setText(Double.toString(pLat));

                textLong.setText(Double.toString(pLong));

               CreateNewProduct p = new CreateNewProduct();
               p.execute();

            }
        }

我希望我有所帮助。如果您有更多问题,请询问!

于 2013-01-22T09:17:11.937 回答
0

您可以使用 LocationManager 类为所需位置添加邻近度,而不是调用类。

您可以使用 addProximityAlert() 方法和 PendingIntent 来实现它。

将要在位置更改上执行的代码放在 PendingIntent 中。

Android 接近警报

于 2013-01-22T11:19:04.873 回答