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