1

我Activty代碼片段是實現GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener傳遞字符串從活動到碎片

@Override 
public void onConnected(Bundle bundle) { 
     getCurrentLocation();   
} 
public void getCurrentLocation() { 
    if (this.servicesConnected()) { 
     mLocationClient.requestLocationUpdates(mLocationRequest, this); 
     mCurrentLocation = mLocationClient.getLastLocation(); 
     ArrayList<Address> addresses = null; 
     try { 
      latitude = String.valueOf(mCurrentLocation.getLatitude()); 
      longitude = String.valueOf(mCurrentLocation.getLongitude()); 
      addresses = (ArrayList<Address>) gCoder. 
        getFromLocation(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), 1); 
      mLocationClient.disconnect(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     if (addresses != null && addresses.size() > 0) { 
      Log.wtf("Arsnal", "" + addresses.get(0).getLocality()); 
     } else { 
      Toast.makeText(this, R.string.no_address_found, Toast.LENGTH_LONG).show(); 
     } 
     Log.wtf("Location", "Lat " + latitude + " - lon " + longitude); 
    } 
} 

我只想讓我的片段字符串緯度和經度,即

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.wtf("check","Inside OnCreate of Fragment!"); 
    Log.wtf("check","Latitude"+((MyActivuty)getActivity()).latitude+ 
"Longitude"+((MyActivuty)getActivity()).longitude); 
} 

我得到NPE在這一行,即

Log.wtf("check","Latitude"+((MyActivuty)getActivity()).latitude+ 
"Longitude"+((MyActivuty)getActivity()).longitude); 

因爲在片段的OnC之後調用onComplete方法reate()。我可以解決這個問題嗎? 任何幫助表示讚賞感謝

+3

有兩種選擇。 1)將數據保存在共享首選項中。 2)通過捆綁傳遞數據。 – Piyush 2014-09-01 11:32:11

+0

何時調用getCurrentLocation? – Simas 2014-09-01 11:37:58

+0

它被稱爲OnCoonectedOveridden方法 – goonerDroid 2014-09-01 11:39:55

回答

2

片段內創建一個回調函數:

public void initFragment() { 
    // Coordinates are available do something with them 
    // ((MyActivuty)getActivity()).latitude 
    // ((MyActivuty)getActivity()).longitude 
} 

然後在您的活動保存到創建片段的引用:

MyFrag myFrag 
... 
myFrag = new MyFrag(); 
... 

,並致電片段的功能當座標準備好時:

public void getCurrentLocation() { 
    ... 
    myFrag.initFragment(); 
} 
+0

感謝這爲我工作。 @ user3249477請你認爲你可以給我你這個問題的意見http://stackoverflow.com/questions/25598696/recommended-way-order-to-read-data-from-a-webservice-parse-that-data -and-inse – Axel 2014-09-02 03:27:34

+0

確定它確實有效。但我的情況是我使用了多個片段,我使用的是一個適配器創建的,而不是使用單個片段 – goonerDroid 2014-09-02 06:30:43