吐司不会从屏幕上消失

时间:2012-08-30 15:58:02

标签: android toast

我的简单android应用程序使用GPS线有问题。

我的类MyLocationListener实现了LocationListener,并且有一个静态方法调用:

    String strText ="My current location is: " + "Latitude = " +  location.getLatitude() + " Longitude= " + location.getLongitude();
    Toast.makeText(GpsModule.cont, strText, Toast.LENGTH_SHORT).show();

问题在于显示此字符串。它出现了,永远不会结束。当我按下主菜单的后退按钮时,即使我关闭应用程序,它也会不断出现。任何线索?我该如何解决这个问题?

GpsModule类:

public class GpsModule extends Activity {

public static Context cont;
//public static WebView position;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gps);
    cont = getApplicationContext();
    //position = new WebView(cont);

    //position = (WebView) findViewById(R.layout.gps);
    //position.getSettings().setJavaScriptEnabled(true);


    LocationManager locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    LocationListener locListener = new MyLocationListener();
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
}

MyLocationListener类:

@SuppressLint("ShowToast")

public class MyLocationListener实现了LocationListener {

public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    location.getLatitude();
    location.getLongitude();

    String strText ="My current location is: " + "Latitude = " +  location.getLatitude() + " Longitude= " + location.getLongitude();
    Toast.makeText(GpsModule.cont, strText, Toast.LENGTH_SHORT).show();

}

public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub
    Toast.makeText(GpsModule.cont, "GPS disabled", Toast.LENGTH_SHORT).show();
}

public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub
    Toast.makeText(GpsModule.cont, "GPS enabled", Toast.LENGTH_SHORT).show();
}

public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

}

4 个答案:

答案 0 :(得分:3)

我认为,您在位置检测功能中添加了代码,LocationListener处于活动状态。这意味着当GPS检测新位置时会调用您的Toast。

答案 1 :(得分:3)

请阅读方法LocationManager.requestLocationUpdates()的文档。

特别是参数:

    minTime     minimum time interval between location updates, in milliseconds.

每10秒尝试一次值10'000。在生产中,你应该考虑超过分钟的价值。

答案 2 :(得分:1)

看起来您的位置监听器处于活动状态并反复被调用。你搬家了吗?位置更改时会调用LocationListener。

答案 3 :(得分:1)

试试这个,

1。

Toast.makeText(getBaseContext(), strText, Toast.LENGTH_SHORT).show();

2。

@Override 
public void onPause() {
    super.onPause();
    locationManager.removeUpdates(locationListener);
}

3。

@Override
    public void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                Length, long, locationListener);
    }

长度和长度应大于0。