в моем приложении у меня есть 2 фрагмента с именем Home и account. В фрагменте Home я пытаюсь получить пользователя Последнее известное местоположение с помощью API-интерфейса Fused location. Проблема в том, что когда приложение запускается впервые, оно не получает местоположение пользователя и когда я переключаюсь.между фрагментами и возвращением к Фрагменту дома он показывает местоположение.Вот мой фрагмент кода Home.
Home.java
public class Home extends Fragment implements GoogleApiClient.OnConnectionFailedListener,GoogleApiClient.ConnectionCallbacks,
com.google.android.gms.location.LocationListener{
TextView fragText;
GoogleApiClient mGoogleApiClient;
LocationRequest mLocationRequest;
Location mLocation;
public Home() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
fragText = view.findViewById(R.id.fragText);
locationManager = (LocationManager)getContext().getSystemService(getContext().LOCATION_SERVICE);
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
return view;
}
@Override
public void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
public void onStop() {
super.onStop();
if(mGoogleApiClient.isConnected()){
mGoogleApiClient.disconnect();
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLocation != null) {
String str1 = hereLocation(mLocation.getLatitude(), mLocation.getLongitude());
fragText.setText(str1);
}
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
Пожалуйста, дайте мне знать, что я делаю неправильно в приведенном выше коде.
THANKS