我正在开发一个简单的Android应用程序,带有GPS监听器和webview。
我可以毫无问题地获得经纬度。问题是,我想将纬度和经度放入一个URL(如myurl.com/mypage.php?lat=57&lon=21)......但数据存储的变量仅限于其类。我无法弄清楚如何声明或创建一个我可以在整个主类中使用的变量。这是我的代码:
public class WTest2Activity extends Activity {
public String txt;
public class MyLocationListener implements LocationListener {
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
txt = "Latitude: " + loc.getLatitude() + "Longitude: " + loc.getLongitude();
Toast.makeText( getApplicationContext(),txt,Toast.LENGTH_SHORT).show();
}
public void onProviderDisabled(String provider) {
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
}
public void onProviderEnabled(String provider) {
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {} /* do nothing */
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
WebView webview;
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.myurl.com/page.php?this=" + txt);
}
}
答案 0 :(得分:1)
您的OnCreate
方法是在活动开始时调用的方法。那时,txt
是null
。这就是为什么它不会显示在你的网址中。然后,onLocationChanged
设置txt
的值,但之后你在哪里使用它?的无处强>!
您应该将onCreate
中的内容移至onLocationChanged
:
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
txt = "Latitude: " + loc.getLatitude() + "Longitude: " + loc.getLongitude();
Toast.makeText( getApplicationContext(),txt,Toast.LENGTH_SHORT).show();
webview.loadUrl("http://www.myurl.com/page.php?this=" + txt);
}
答案 1 :(得分:0)
在这里添加一个新行:
public class WTest2Activity extends Activity {
public String txt;
public Location location;
然后,在public void onLocationChanged(Location loc)
中,尝试设置location.setLatitude(loc.getLatitide);
和location.setLongitude(loc.getLongitude);
然后,您可以使用全局变量location
答案 2 :(得分:0)
Buddy在你的代码中只是一个很小的逻辑错误。让我解释。您正在加载URL之后立即请求位置更新。现在位置监听是不同的线程,它正在更新txt变量的值。更新位置需要时间。每次拍摄时间都可能不同。这就是为什么你需要将loadUrl代码移动到onLocationChanged方法。