微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在公共LocationResult之外访问字符串信息

如何解决在公共LocationResult之外访问字符串信息

| 我有如下脚本,从LocationResult获取网址以在httppost中使用
public class List extends ListActivity {

    int ct_id;
    String[] ct_number = null;
    String[] ct_address = null;
    String[] ct_phone = null;
    String[] ct_fax = null;
    String[] ct_email = null;
    String[] ct_city = null;
    String[] ct_province = null;
    String[] ct_country = null;
    String[] ct_pcode = null;
    String[] ct_lat = null;
    String[] ct_long = null;
    String[] ct_distance = null;
    String[] ct_show = null;
    String[] ct_listinfo = null;

    MyLocation myLocation = new MyLocation();

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.timslist);
        findCurrentLocation();

        //check for key to remove ads
        if(isKeyInstalled(this) == false){

            //AdMob Banner
            LinearLayout parent = (LinearLayout) findViewById(R.id.adveiw);
            AdView ad = new AdView(this,AdSize.BANNER,\"XXXXXXXXXXXXXX\");
            parent.addView(ad);
            AdRequest r = new AdRequest();
            //r.setTesting(true);
            r.setTesting(false);
            ad.loadAd(r);
        }

        if(isKeyInstalled(this) == true){

        }

        String result = null;
        InputStream is = null;
        StringBuilder sb = null;
        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(\"\" + infourl + \"\");
            //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            httpentity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e(\"log_tag\",\"Error in http connection\"+e.toString());
        }
        //convert response to string
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,\"iso-8859-1\"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + \"\\n\");
            String line=\"0\";
            while ((line = reader.readLine()) != null) {
                sb.append(line + \"\\n\");
            }
            is.close();
            result=sb.toString();
        }catch(Exception e){
            Log.e(\"log_tag\",\"Error converting result\"+e.toString());
        }
        //paring data
        JSONArray jArray;
        try{
            jArray = new JSONArray(result);
            JSONObject json_data=null;
            ct_number=new String[jArray.length()];
            ct_address=new String[jArray.length()];
            ct_phone=new String[jArray.length()];
            ct_fax=new String[jArray.length()];
            ct_email=new String[jArray.length()];
            ct_city=new String[jArray.length()];
            ct_province=new String[jArray.length()];
            ct_country=new String[jArray.length()];
            ct_pcode=new String[jArray.length()];
            ct_lat=new String[jArray.length()];
            ct_long=new String[jArray.length()];
            ct_distance=new String[jArray.length()];
            ct_listinfo=new String[jArray.length()];
            for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);
                ct_id=json_data.getInt(\"location_id\");
                ct_number[i]=json_data.getString(\"store_number\");
                ct_address[i]=json_data.getString(\"store_address\");
                ct_phone[i]=json_data.getString(\"store_phone\");
                ct_fax[i]=json_data.getString(\"store_fax\");
                ct_email[i]=json_data.getString(\"store_email\");
                ct_city[i]=json_data.getString(\"store_city\");
                ct_province[i]=json_data.getString(\"store_province\");
                ct_country[i]=json_data.getString(\"store_country\");
                ct_pcode[i]=json_data.getString(\"store_pcode\");
                ct_lat[i]=json_data.getString(\"store_lat\");
                ct_long[i]=json_data.getString(\"store_long\");
                ct_distance[i]=json_data.getString(\"store_distance\");
                ct_listinfo[i] = new String (ct_address[i] + \"\\n\" + ct_city[i] + \",\" + ct_province[i] + \" - \" + ct_distance[i] + \" Km Away\");
            }
        }
        catch(JSONException e1){
            Toast.makeText(getBaseContext(),\"No Addresses Found\",Toast.LENGTH_LONG).show();
        } catch (ParseException e1) {
            e1.printstacktrace();
        }

        setlistadapter(new ArrayAdapter<String>(this,R.layout.listview,ct_listinfo));
        ListView lv;
        lv = getListView();
        lv.setTextFilterEnabled(true);
        lv.setCacheColorHint(Color.TRANSPARENT);
        lv.setBackgroundColor(Color.TRANSPARENT);
        lv.setonItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> timslist,View view,int position,long id) {

                Intent i = new Intent(getApplicationContext(),TimsListMore.class);

                i.putExtra(\"ct_number_pass\",ct_number[position]);
                i.putExtra(\"ct_address_pass\",ct_address[position]);
                i.putExtra(\"ct_phone_pass\",ct_phone[position]);
                i.putExtra(\"ct_city_pass\",ct_city[position]);
                i.putExtra(\"ct_province_pass\",ct_province[position]);
                i.putExtra(\"ct_country_pass\",ct_country[position]);
                i.putExtra(\"ct_pcode_pass\",ct_pcode[position]);
                i.putExtra(\"ct_distance_pass\",ct_distance[position]);

                startActivity(i);

            }
        });
    }

    protected boolean isKeyInstalled(Context context) {
          // the packagename of the \'key\' app
          String proPackage = \"XXXXXXXXXXXXXXXXXXXX\";

          // get the package manager
          final PackageManager pm = context.getPackageManager();

          // get a list of installed packages
          List<PackageInfo> list = pm.getInstalledPackages(PackageManager.GET_disABLED_COMPONENTS);

          // let\'s iterate through the list
          Iterator<PackageInfo> i = list.iterator();
          while(i.hasNext()) {
            PackageInfo p = i.next();
            // check if proPackage is in the list AND whether that package is signed
            //  with the same signature as THIS package
            if((p.packageName.equals(proPackage)) &&
               (pm.checkSignatures(context.getPackageName(),p.packageName) == PackageManager.SIGNATURE_MATCH))
              return true;
          }
          return false;
        }

    private void findCurrentLocation() {
        myLocation.getLocation(this,locationResult);
    }

    public LocationResult locationResult = new LocationResult() {


        public void gotLocation(Location location) {
            // Todo Auto-generated method stub
            if (location != null) {
                String infourl  = \"http://www.somedomain.com/list.PHP?lat=\" + location.getLatitude() + \"&long=\" + location.getLongitude();

            }
        }
    };
}
所以这
String infourl  = \"http://www.somedomain.com/list.PHP?lat=\" + location.getLatitude() + \"&long=\" + location.getLongitude();
需要进入
String result = null;
        InputStream is = null;
        StringBuilder sb = null;
        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(\"\" + infourl + \"\");
            //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            httpentity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e(\"log_tag\",\"Error in http connection\"+e.toString());
        }
我认为这并非难事。     

解决方法

        我的建议是尝试使用公共字符串...希望能有所帮助。     ,        在上一个问题之后:
public LocationResult locationResult = new LocationResult() {
  String latitude = null;  
  String longitude = null;  

  public void gotLocation(Location location) {
    if (location != null) {
      latitude  = location.getLatitude() + \"\";
      longitude  = location.getLongitude() + \"\";
    }
  }

  public String getLatitude() {
    return latitude;
  }
  public String getLongitude() {
    return longitude;
  }
}
您将其用作
String location = new String (locationResult.getLatitude() + \" \" + locationResult.getLongitude());
活动中的任何地方。当然,这是非常粗糙的,甚至根本不检查是否存在有效的位置,但是它使您可以解决该问题。 再想一想,我相信您真正想要的与您要问的相反:如果您需要lat和long值来发送http帖子,那么我将在
gotLocation
函数内进行该帖子。这样,您可以确定不会将空值发送到帖子。创建一个方法
public void postURL (String urlString) {
  if (urlString == null) return;
  HttpPost httppost = new HttpPost(urlString);
  // whatever else code you have to handle responses,etc.
}
并从
gotLocation()
中称呼为
TimsList.this.postURL (\"http://mytimmies.myfunhouse.net/app_main_list.php?lat=\" + 
  location.getLatitude() + \"&long=\" + location.getLongitude());
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。