2011-09-25 77 views
1

我終於到達了一個獲取用戶GPS位置的應用程序,但是我實現了它實現LocationListener。它工作正常,但我需要這樣做而不實施它,因爲我必須做一個不實現方法的類。如何在沒有「implements LocationListener」的情況下使用LocationListener?

我搜索了很多教程,並檢查了很多網站,我嘗試將我的代碼轉換爲不實現LocationListener,但我無法做到這一點,我測試的每一件事都打破了我的應用程序,並停止獲取GPS位置用戶。

請,如果這個可以改變我的代碼不使用別人專家「實現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) {} 
} 
+1

你是什麼意思,「因爲我必須做一個沒有實現方法的類」? – Howard

+1

「因爲我必須做一個沒有實現方法的類」 - 這對我來說聽起來像是一個相當無用的類。如果您要提供相當不合理的要求,請提供更多關於*爲什麼*的詳細信息,以避免顯而易見和自然的做事方式。 –

+1

爲什麼你覺得你有這個要求,而不是實現一個接口? – adamp

回答

5
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) {} 
} 
} 

你走了。

+0

你需要在onDestroy()期間做任何清理嗎? –

3

對於您將不得不創建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()); 
      } 
     }; 

參考之後,你將不得不引用這個LocationListener的像這裏面的onCreate()

mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
     mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
       500, 0, mLocationListener); 
相關問題