有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在没有“实现LocationListener”的情况下使用LocationListener?

我终于找到了一个可以获取用户GPS位置的应用程序,但我找到了它,它实现了LocationListener。它工作得很好,但我需要在不实现它的情况下执行它,因为我必须执行一个不实现方法的类

我搜索了很多教程,查看了很多网站,我试图将代码转换为不实现LocationListener,但我做不到,我测试的每件事都破坏了我的应用程序,并停止获取用户的GPS位置

请,如果有人在这方面的专家可以转换我的代码不使用“implements LocationListener”,我会很感激他

这是要转换的代码:

public class GpsMiniActivity extends Activity implements LocationListener{

private LocationManager mLocMgr;
private TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FrameLayout rl = new FrameLayout(this.getApplicationContext());
    LinearLayout ll= new LinearLayout(this.getApplicationContext());
    ll.setOrientation(LinearLayout.VERTICAL);

    setContentView(rl);
    rl.addView(ll);

    tv1=new TextView(getApplicationContext());
    ll.addView(tv1);

    //setContentView(R.layout.main);
    mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
    mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            500, 0, this);
}
@Override
public void onLocationChanged(Location location) {
    tv1.setText("Lat " +   location.getLatitude() + " Long " + location.getLongitude());
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}

共 (2) 个答案

  1. # 1 楼答案

    public class GpsMiniActivity extends Activity {
    
    private LocationManager mLocMgr;
    private TextView tv1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        FrameLayout rl = new FrameLayout(this.getApplicationContext());
        LinearLayout ll= new LinearLayout(this.getApplicationContext());
        ll.setOrientation(LinearLayout.VERTICAL);
    
        setContentView(rl);
        rl.addView(ll);
    
        tv1=new TextView(getApplicationContext());
        ll.addView(tv1);
    
        //setContentView(R.layout.main);
        mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
        mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                500, 0, ll);
    }
    }
    private LocationListener ll = new LocationListener(){
    public void onLocationChanged(Location location) {
        tv1.setText("Lat " +   location.getLatitude() + " Long " + location.getLongitude());
    }
    public void onProviderDisabled(String provider) {}
    public void onProviderEnabled(String provider) {}
    public void onStatusChanged(String provider, int status, Bundle extras) {}
    }
    }
    

    好了

  2. # 2 楼答案

    为此,您必须在onCreate()之外创建一个单独的LocationListener,并将其引用给LocationManager的requestLocationUpdates,如下所示

     LocationListener mLocationListener = new LocationListener() {
    
                @Override
                public void onStatusChanged(String provider, int status, Bundle extras) {}
                @Override
                public void onProviderEnabled(String provider) {}
                @Override
                public void onProviderDisabled(String provider) {}
                @Override
                public void onLocationChanged(Location location) {
                    tv1.setText("Lat " +   location.getLatitude() + " Long " + location.getLongitude());
                }
            };
    

    在那之后,你必须在onCreate()中像这样引用这个LocationListener

    mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
            mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    500, 0, mLocationListener);