2012-02-18 43 views
0

我正在開發一個簡單的Android應用程序,帶有一個GPS監聽器和一個webview。Android變量範圍;或者,在哪裏是我的字符串

我可以得到沒有問題的經度和緯度。問題是,我想將經緯度放入一個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

我不明白你的意思是「限於同級」。你想達到什麼目的?你在哪裏試圖訪問什麼? – slezica 2012-02-18 01:12:09

回答

1

OnCreate方法是所謂的活動開始時的方法。那時候,txtnull。這就是爲什麼它不會顯示在您的網址。然後,onLocationChanged將設置值txt,但您在哪裏使用此後? 無處不在

你應該將你在onCreateonLocationChanged做什麼:

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); 
} 
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);

那麼,您可以使用全局變量訪問​​您的位置

0

巴迪在你的代碼中只是一個小邏輯錯誤。讓我解釋。您正在請求位置更新,然後正在加載URL。現在位置監聽是不同的線程,它正在更新txt變量的值。更新位置需要時間。而且每次都會有所不同。這就是爲什麼你需要將你的loadUrl代碼移動到onLocationChanged方法。