В учебниках по facebook я вижу этот пример кода:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
Используя этот код, я получаю: onAuthFail с ошибкой = "Действие отменено".
Удаление
super.onActivityResult(requestCode, resultCode, data);
Он работает нормально.
Итак, мой вопрос: где поставить super.onActivityResult(requestCode, resultCode, data)? Перед обратным вызовом facebook, после или удалите его. В данный момент без вызова super.onActivityResult - код работает нормально. Может ли пропустить проблемы?
Я использую это в манифесте:
<activity android:launchMode="singleInstance" android:name=".profile.LoginForm"
android: screenOrientation = "портрет" android: noHistory = "true">
Может ли это вызвать проблему?
Причина, по которой в манифесте указывать "singleInstance", заключается в том, чтобы избежать перезапуска моей формы входа. Эта проблема вынудила к текущей проблеме.
Что касается вашего обновления:
android:launchMode="singleInstance"
действительно вызывает проблемы с startActivityForResult()
и onActivityResult()
. См. Документацию launchMode:
С другой стороны, деятельность "singleInstance" не позволяет другим действиям не участвовать в ее задаче. Это единственное занятие в задаче. Если он запускает другое действие, эта деятельность назначается другой задаче.
Это означает, что запущенная функция auth facebook не является частью вашей текущей задачи и поэтому не может доставить никаких результатов. Если вы отлаживаете это, вы должны заметить, что onActivityResult()
сразу после того, как была запущена суб-активность (что слишком рано, чтобы получить правильный/полезный результат).
Я бы сказал, изменив ваш launchMode на что-то другое (также не на singleTask
, у него такая же проблема).
Я не уверен, как метод суперкласса влияет на это, хотя, поскольку вы утверждаете, что это исправлено. Теоретически это никогда не должно работать с singleInstance
.
onActiityReult
в документации по onActiityReult
? Я не привык писать код, в котором нужно угадывать, каким должен быть дизайн.
Если вы посмотрите на исходный код Activity.onActivityResult()
, вы заметите, что он пуст. Это означает следующее:
super
вызов мог повлиять на метод Facebook.UPD: комментарий alextsc предоставляет действительную гипотезу.
Activity
, это не должно быть проблемой. Реализация по умолчанию ничего не делает. Скорее всего, ваш суперклассonActivityResult()
немногоonActivityResult()
. Если это ваша собственная реализация: Можете ли вы также опубликовать этот источник?