#android #google-api #lifecycle #onactivityresult
#Android #google-api #жизненный цикл #onactivityresult
Вопрос:
У меня есть фрагмент, из которого пользователь нажимает на кнопку (из G API) и входит в систему с учетной записью в своих сервисах Google, пока все хорошо…
Проблема в том, что при нажатии кнопки оно должно запускать действие после завершения процесса входа в систему, НО это происходит только (предположительно) при уничтожении действия (может быть остановлено, я действительно не знаю) и возобновлении его снова, потому что, если я захожу в меню и снова захожу в приложение, сразу начинается второе действие (или при смене ориентации, которая уничтожает и воссоздает действие).
Я знаю, что это как-то связано с методом жизненного цикла onActivityResult, потому что в моем приложении также есть facebook login, и я использовал uiHelper из facebook API, я просто не нашел его для Google api client (я не думаю, что он существует на самом деле).
Редактировать:
это результат моей активности, если я удалю «uiHelper.onActivityResult (…)», то то же самое произойдет с моим логином facebook.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
это вызывается при входе пользователя в систему
@Override
public void onConnected(Bundle bundle) {
mSignInClicked = false;
// Get user's information
getProfileInformation();
}
и это getProfileInformation, которая заполняет объект, который я использую для своего приложения (это простое приложение для напоминаний)
private void getProfileInformation(){
try {
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
RemindersUser.IS_FB_USER =false;
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String personPhotoUrl = currentPerson.getImage().getUrl();
personPhotoUrl = personPhotoUrl.substring(0,personPhotoUrl.length() - 2) PROFILE_PIC_SIZE;
String personGooglePlusId = currentPerson.getId();
String email = Plus.AccountApi.getAccountName(mGoogleApiClient);
mRemindersUser =new RemindersUser(
personName,
email,
personPhotoUrl,
personGooglePlusId);
Intent viewPagerIntent = new Intent(getActivity().getApplicationContext(), ViewPagerActivity.class);
viewPagerIntent.putExtra(RemindersUser.USERNAME, mRemindersUser.getName());
viewPagerIntent.putExtra(RemindersUser.MAIL, mRemindersUser.getMail());
viewPagerIntent.putExtra(RemindersUser.IMAGE, mRemindersUser.getImage());
viewPagerIntent.putExtra(RemindersUser.USER_ID, mRemindersUser.getUserId());
startActivity(viewPagerIntent);
} else {
Toast.makeText(getActivity(),"Person information is null", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
Комментарии:
1. Готово, я почти полностью выполнил свое приложение фрагментами, вот почему все вызовы getActivity.
Ответ №1:
Решаемая:
Я неправильно управлял жизненным циклом подключений Google , делая это на один уровень абстракции ниже, чем следовало, я начал управлять подключением из действия, а не из фрагмента, и все работало как надо.