У меня есть фрагмент, который создается экземпляром Activity. Проблема, которую я испытываю, заключается в том, что у меня есть другой класс в фрагменте, который принимает в качестве параметра контекст активности.Передайте контекст из фрагмента внутри действия другому классу
public class LocationQueries {
Activity context;
private static int REQUEST_CODE_RECOVER_PLAY_SERVICES = 200;
public LocationQueries(Activity context) {
this.context = context;
}
public boolean checkGooglePlayServices() {
int checkGooglePlayServices = GooglePlayServicesUtil
.isGooglePlayServicesAvailable(context);
if (checkGooglePlayServices != ConnectionResult.SUCCESS) {
/*
* google play services is missing or update is required
* return code could be
* SUCCESS,
* SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED,
* SERVICE_DISABLED, SERVICE_INVALID.
*/
GooglePlayServicesUtil.getErrorDialog(checkGooglePlayServices,
context, REQUEST_CODE_RECOVER_PLAY_SERVICES).show();
return false;
}
return true;
}
}
я создаю экземпляр этого класса в моем фрагменте как этот
private LocationQueries locationQueries = new LocationQueries(getActivity());
, но когда я пытаюсь использовать locationQueries.checkGooglePlayServices();
я Caused by: java.lang.NullPointerException: Attempt to invoke virtual method android.content.pm.PackageManager android.content.Context.getPackageManager() on a null object reference
. Похоже, что LocationQueries(getActivity())
фактически не передает контекст активности. Как я могу это решить?
Edit: Все работает, если я делаю то же самое от деятельности ->LocationQueries(this);
Возможно, ваш фрагмент еще не присоединился к Деятельности в зависимости от того, в какой части жизненного цикла он находится. Таким образом, он может фактически вернуть значение null. Обязательно выполняйте то, что вам нужно, между onAttach (Activity) и onDetach() –