我很抱歉我的简单问题,但我是这个话题的新手。我有Android的位置类,我用Toast Message到达我的位置,但是我无法达到我的位置值其他类。例如;
我的位置等级
import android.app.AlertDialog;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class MyLocation{
private LocationManager locationManager;
LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
}
public class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Bundle bundle = new Bundle();
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
public String getLat(){
return lat.toString();
}
public String getLon(){
return lon.toString();
}
private Double lat;
private Double lon;
}
我打电话给
MyLocation myLocation = new MyLocation(getActivity());
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(bundle.getString("lon") != null){
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));
}
}
};
new Thread(runnable).start();
但每次我的包返回null值。我能做什么 ?
答案 0 :(得分:3)
因为您构建了一个新的Bundle,因此它可以检索您在活动中保存的数据。
您可以实施以下内容:
public class MyLocationListener implements LocationListener{
Bundle bundle = new Bundle();
public Bundle getBundle(){
return bundle;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
//other method
}
public class MyLocation{
private LocationManager locationManager;
LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
public Bundle getBundle(){
if(locationListener != null)
return locationListener.getBundle();
else
return null;
}
}
然后就这样做:
Bundle bundle = myLocation.getBundle();
if(bundle != null){
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));
}
编辑:
更改private LocationListener locationListener;
private MyLocationListener locationListener;
答案 1 :(得分:1)
我的所有代码;
http://p1305.hizliresim.com/19/h/n2zwm.png
感谢您的帮助
package com.example.postproject;
import android.app.AlertDialog;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class MyLocation{
private LocationManager locationManager;
private LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
}
public Bundle getBundle(){
if(locationListener != null)
return locationListener.getBundle();
else
return null;
}
public class MyLocationListener implements LocationListener{
Bundle bundle = new Bundle();
public Bundle getBundle(){
return bundle;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
public String getLat(){
return lat.toString();
}
public String getLon(){
return lon.toString();
}
private Double lat;
private Double lon;
}
}
我用
MyLocation myLocation = new MyLocation(getActivity());
Bundle bundle = myLocation.getBund();
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));