Невозможно создать два петлителя в одном и том же действии при выполнении двух функций facebook - Android

Сначала я хочу войти через Facebook. Для этого я использовал Android Facebook SDK. Код для этого

            facebook.authorize(ac, PERMISSIONS, new LoginDialogListener());

Это не сработало. Поэтому мне нужно поставить Looper.prepare() и Looper.loop().

            Looper.prepare();
            facebook.authorize(ac, PERMISSIONS, new LoginDialogListener());
            Looper.loop();

После входа в систему, нажав еще одну кнопку, я хочу опубликовать сообщение на стене друга. Так что я использовал

        Looper.prepare();
    AsyncFacebookRunner as=new AsyncFacebookRunner(facebook);
    as.request(userId+"/feed", paramss, "POST",  new WallPostRequestListener(), null);
   Looper.loop();

Это показывает ошибку, говоря, что

Для каждого потока может быть создан только один петлитель.

Если я использую код без строк петлителя, например

    AsyncFacebookRunner as=new AsyncFacebookRunner(facebook);
    as.request(userId+"/feed", paramss, "POST",  new WallPostRequestListener(), null);

Затем он показывает ошибку, говоря

Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare()

Я искал в сети решение, не могу найти. Мне нужно использовать обе функции в одном и том же действии. Поэтому, пожалуйста, помогите, если кто-нибудь знает, что не так с моим кодом ........ И считайте меня новичком в Android с очень небольшим знанием темы ........


person AtanuCSE    schedule 28.08.2012    source источник
comment
Можете ли вы опубликовать весь свой код? В большинстве случаев вам никогда не придется вызывать Looper.prepare() и Looper.loop().   -  person Jesse Chen    schedule 28.08.2012
comment
Общий код 445 строк..!! stackoverflow .com/questions/9338470/ По этой ссылке вы можете получить основную часть. Вот почему мне нужно было использовать looper.loop();   -  person AtanuCSE    schedule 28.08.2012
comment
Есть ли причина, по которой вы должны выполнять аутентификацию внутри AsyncTask? facebook.authorize() уже асинхронный, поэтому у вас возникла эта проблема.   -  person Jesse Chen    schedule 28.08.2012
comment
хорошо, поправил код без AsyncTask, заработало. Также попробовал нить во время публикации, это тоже сработало. Спасибо   -  person AtanuCSE    schedule 29.08.2012


Ответы (1)


new Thread(new Runnable() {

        public void run() {


                AsyncFacebookRunner as=new AsyncFacebookRunner(facebook);
                as.request(userId+"/feed", paramss, "POST",  new WallPostRequestListener(), null);

        }

Это решение моей проблемы. Или другой способ, упомянутый в комментариях Джесси Чена.

person AtanuCSE    schedule 29.08.2012