У меня проблема с входом в Twitter (через TwitterKit), когда я пытаюсь войти в систему, и приложение уничтожается из памяти.Весь процесс происходит внутри DialogFragment.
Я обрабатываю savedInstanceState
для восстановления интерфейса.
Странная часть начинается здесь.Когда начинается процесс входа в систему, я получаю экран аутентификации (уже авторизованный) в твиттере дважды.Появляется -> Принять один раз -> Появляется снова -> Принять снова.
В этот момент мы возвращаемся к приложению, где перестройка начинается должным образом (последующая отладка).Теперь, если я не перезапущу Callback
, я получаю сбой, потому что это null
.Обратный вызов создается в первый раз и во второй раз с помощью:
TwitterConfig config = new TwitterConfig.Builder(getActivity())
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_consumer_key), getResources().getString(R.string.twitter_consumer_secret)))
.debug(true)
.build();
Twitter.initialize(config);
mTwitterAuthClient = new TwitterAuthClient();
mTwitterAuthClient.authorize(getActivity(), new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
Timber.d("Twitter Login Successful.");
long authId = result.data.getUserId();
doRegistration(String.valueOf(authId));
}
@Override
public void failure(TwitterException exception) {
Timber.d("Twitter Login Failure!");
clearLoginSessions();
}
});
При вышеупомянутом вызове во второй раз приложение продолжает работу правильно вплоть до onActivityResult
и затем вводит обратный вызов.Однако в новом обратном вызове this
все равно null.Это похоже на то, как обратный вызов возвращается к уничтоженному фрагменту.
Обратный вызов вызывается только один раз, поэтому вторая загадка - почему экран аутентификации появляется дважды.
Я не знаю, какподойти к этому.Любая помощь очень ценится.