onActivityResult получен до входа в систему - PullRequest
1 голос
/ 26 марта 2012

В уроках 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 - код работает нормально. Может ли пропасть вызвать проблемы?

UPDATE:

Я использую это в манифесте:

<activity android:launchMode="singleInstance" android:name=".profile.LoginForm" 

android: screenOrientation = "портрет" android: noHistory = "true">

Может ли это вызвать проблемы?

UPDATE2:

Причина, по которой в манифесте указано 'singleInstance', заключается в следующем: чтобы избежать повторного запуска моей формы входа. Эта проблема вынуждает к текущей проблеме.

Ответы [ 2 ]

5 голосов
/ 26 марта 2012

По поводу вашего обновления:

android:launchMode="singleInstance" 

действительно вызывает проблемы с startActivityForResult() и onActivityResult().См. Документацию launchMode :

Действие "singleInstance", с другой стороны, не позволяет другим действиям быть частью его задачи.Это единственное занятие в задании.Если он запускает другое действие, это действие назначается другой задаче.

Это означает, что запущенное действие проверки подлинности facebook не является частью вашей текущей задачи и, следовательно, не может доставить никаких результатов.,Если вы отладите это, вы должны заметить, что onActivityResult() вызывается сразу после того, как вспомогательное действие было начато (что слишком рано, чтобы иметь правильный / полезный результат) .

Я бы сказал, измените ваш launchMode на что-то другое (также не на singleTask, у него та же проблема) .

Я не уверен, как метод суперкласса влияет на это,так как вы утверждаете, что это исправлено.Теоретически это никогда не должно работать с singleInstance.

0 голосов
/ 26 марта 2012

Если вы посмотрите на Activity.onActivityResult() исходный код , вы заметите, что он вроде пустой.Это означает следующее:

  • Удаление это совершенно нормально
  • С другой стороны, загадка остается: нет очевидного способа, как пустой вызов super может повлиять на метод Facebook.

UPD: комментарий alextsc дает правильную гипотезу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...