2015-12-29 53 views
1

在我的android應用程序中,我使用的是Google Maps,我有一個隨機數生成器,它將從5個位置隨機選取一個方法,並找到用戶位置。我還添加了一個刷新按鈕,將關閉該活動並重新啓動它,但我只希望它重新啓動查找用戶的位置方法。當你刷新整個活動時,該標誌會隨機更改我不想要的內容。在活動中刷新方法

Button button2=(Button) findViewById(R.id.button2); 
     button2.setOnClickListener(new View.OnClickListener() { 
      public void onClick (View w){ 
       Intent intent = getIntent(); 
       finish(); 
       startActivity(intent); 
      } 
     }); 

這是當按鈕被按下,但我只希望它刷新此方法

private void handleNewLocation(Location location) { 
     Log.d(TAG, location.toString()); 
    currentLatitude = location.getLatitude(); 
    currentLongitude = location.getLongitude(); 

    LatLng latLng = new LatLng(currentLatitude, currentLongitude); 

    //mMap.addMarker(new MarkerOptions().position(new LatLng(currentLatitude, currentLongitude)).title("Current Location")); 
    MarkerOptions options = new MarkerOptions() 
      .position(latLng) 
      .title("You are here"); 
    mMap.addMarker(options); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom((latLng), 11.0F)); 
} 

任何幫助將非常感激的內容,將重新啓動整個活動的方法。

+0

爲什麼不那麼就再次調用此方法find_users_location您刷新()方法 –

+0

@Tauqir它不是一個DUP,在OP明確規定,他們不希望不斷刷新活動。 –

+0

@tauqir該問題是關於刷新整個活動(我使用相同的代碼刷新我的)。我正在尋找如何刷新某種方法 – JMeehan1

回答

0

你可以把你的代碼管理位置更新到一個單獨的方法:

public void UpdateLocation()

說的東西,如下列:

if (isNetworkEnabled) { 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
         MIN_TIME_BW_UPDATES, 
         MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
    if (locationManager != null) { 
     location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (location != null) { 
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 
     } 
    } 

// if GPS Enabled get lat/long using GPS Services 
if (isGPSEnabled) { 
    if (location == null) { 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
          MIN_TIME_BW_UPDATES, 
          MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
     if (locationManager != null) { 
      location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      if (location != null) { 
       .../... 

然後調用從你的onclick監聽器此方法。然後您可以在此方法中調用您的handleNewLocation

+0

我不希望你照原樣複製和粘貼這段代碼,它只是給你一個如何管理它的想法。 –

0

如果您重新創建活動,您可以通過Intent將Location值傳遞給新的活動,例如,

Intent intent = getIntent(); // or create a new Intent 
finish(); 
intent.putExtra("LOCATION", myCurrentLocation); 
startActivity(intent); 

然後,在你選擇一個隨機位置的地方,您可以檢查是否意圖有一個位置,並使用它,即:

Location location; 

Intent intent = getIntent(); 
if(intent.hasExtra("LOCATION")) { 
    location = intent.getSerializableExtra("LOCATION"); 
} else { 
    location = getRandomLocation(); // your code for pick a location 
} 

handleNewLocation(location); 

傳遞數據給通過意向新的活動,你有幾種選擇:

  • 可以使Location類是可序列化(只是有它implement Serializable)。這是最簡單的方法,就是上面的例子。
  • 要獲得稍快的性能,可以製作類Parcelable,然後使用getParcelableExtra方法。 (需要更多的工作,以使課堂Parcelablehttp://developer.android.com/reference/android/os/Parcelable.html
  • 如果您的位置類是由基元的,你可以通過這些原語的意圖,只是實例化一個新Location實例,例如,你可以這樣做:

    intent.putExtra("LOCATION_LAT", myCurrentLocation.getLatitude()); 
    intent.putExtra("LOCATION_LONG", myCurrentLocation.getLongitude());