2012-02-18 9 views
0

私はGPSリスナーとwebviewを使って簡単なAndroidアプリを開発しています。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

答えて

1

あなたOnCreate方法は活動の開始時に呼び出されるメソッドです。その時、txtnullです。だからこそ、あなたののURLにを表示しないでください。次にonLocationChangedtxtの値を設定しますが、後でこれを使用していますか? nowhere

あなたがonLocationChangedonCreateに何をすべきかを移動する必要があります

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 void onLocationChanged(Location loc)で、location.setLatitude(loc.getLatitide);location.setLongitude(loc.getLongitude);

を設定してみてください、そして

public class WTest2Activity extends Activity { 
    public String txt; 
    public Location location; 

をグローバル変数を使用すると、どこにでも自分の場所にアクセスできますあなたのコード内

0

バディそのほんの少しの論理的間違い。私に説明させてください。 URLを読み込んだ直後に位置情報の更新をリクエストしています。現在、位置リスニングは、txt変数の値を更新する異なるスレッドです。また、場所を更新するには時間がかかります。時間は、毎回異なる場合があります。そのため、loadUrlコードをonLocationChangedメソッドに移動する必要があります。

関連する問題