1

に緯度と経度の値を表示しようとしてTextViewいますが、プロジェクトの実行中に値が表示されません。誰でも私を助けることができますか?,事前に感謝します. 私のコードは以下の通りです:
GeocodingActivity.class

public class GeocodingActivity extends Activity {
LocationManager locman;
Criteria cri;
LocationProvider locpro;
AlertDialog.Builder builder;
Handler handler;
TextView t1;
LocationListener loclis;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    t1=(TextView)findViewById(R.id.textView1);
    locman=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
       handler=new Handler(){
        public void handle(Message msg){
                  switch(msg.what){
        case 1: 
            t1.setText((String)msg.obj);
            break;
        }

        }
loclis=new LocationListener(){

        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
Message.obtain(handler, 1,   arg0.getLatitude()+","+arg0.getLongitude()).sendToTarget();

}
@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
    }
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
     }
    };


}

}
4

2 に答える 2

2
Message.obtain(handler,0,location.getLatitude()+","+location.getLongitude()).sendToTarget();

したがって、メソッドgetLongitudegetLatitudeリターンの両方がDouble. そして、あなたが必要Stringです。Stringしたがって、それらをwith メソッドに変換する必要がありますString.valueOf()

Message.obtain(handler, 0, String.valueOf(location.getLatitude()) + "," + String.valueOf(location.getLongitude())).sendToTarget();

次に、 so をMessage.obj返しますそこからObject取得するには、 soにStringキャストする必要がありますStringt1.setText((String) msg.obj);

これで、動作するはずです。


編集:

2 番目のアプローチ

@Override
public void onLocationChanged(Location location) {
   Bundle bundle = new Bundle();
   String data = String.valueOf(location.getLatitude()) + "," + String.valueOf(location.getLongitude());
   bundle.putString("updateGpsData", data);
   yourMessage.setData(bundle);
   yourMessage.obtain(handler, 0).sendToTarget();

}

次に、handleメソッドは次のようになります

public void handle(Message msg){
   t1.setText(msg.getData().getString("updateGpsData"));
}

したがって、更新されたデータを作成Bundleして追加するだけで、更新データを取得するために呼び出すハンドルメソッドでデータBundlesetData()設定できます。MessagegetData().getString()GPS

ペアキーと値Bundleで機能することを忘れないでください。特定のキーでデータを設定するため、データを取得するには同じキー(「updateGpsData」)を使用する必要があります。Bundle

于 2012-06-13T14:03:07.883 に答える
0

String.valueOfこのような座標でこの方法を使用してください

String.valueO(location.getLatitude())+","+String.valueOf(location.getLongitude())
于 2012-06-13T13:47:04.090 に答える