Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Как закрыть диалог - Программирование Android

04.06.2013, 02:57. Просмотров 2396. Ответов 25
Метки нет (Все метки)

Я запускаю метод, чтобы залогиниться через FB. Всё происходит с помощью фрагмента, после авторизации окно остается фрагмента остается. А как его убрать? Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public void loginFacebook() {
        if (!facebook.isSessionValid()) {
            facebook.authorize(getActivity(),
                    new String[] { "email", "publish_stream" },
                     new DialogListener() {
                        @Override
                        public void onCancel() {
                            // функция отмены действия
                        }
 
                        @Override
                        public void onComplete(Bundle values) {
                                                        
                            accountPrefs.access_token = facebook
                                    .getAccessToken();
                        
                            Log.d(LOG_TAG, "accountPrefs.access_token my "+ accountFPrefs.access_token);
                                                                }
 
                        @Override
                        public void onError(DialogError error) {
 
                            // функция ошибки
                        }
 
                        @Override
                        public void onFacebookError(FacebookError fberror) {
 
                            // функция фейсбучной ошибки
                        }
                    });
        }
                    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 02:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как закрыть диалог (Программирование Android):

Закрыть диалог во время выполнения процесса (принудительное срабатывание dismiss()
Всем привет! В приложении есть диалоговое окно с кнопкой, по нажатию которой...

Как обработать диалог?
как сделать так чтобы после открытия диалога он не пропадал по нажатию пальцем...

Диалог как в analog clock
Подскажите пожалуйста, как создать свой диалог? нужно в приложении получать...

Как повесить прогресс диалог секунд на 10?
Здрвствуйте!Нашел код для парсинга данных с сайта через jsoup. Так вот...иногда...

Как передавать динамические данные (координаты GPS) из активити в диалог?
Здравствуйте Уважаемые! :senor: подскажите пожалуйста, есть класс активити в...

Как заставить Activity оставаться открытой, пока в ней отображается диалог?
Есть приложение с сервисом и множеством активити. Сервис периодически рассылает...

25
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:27 #21
добавить переменную для диалога и после авторизации вызывать к ней dismiss.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
07.06.2013, 13:30  [ТС] #22
Цитата Сообщение от V0v1k Посмотреть сообщение
добавить переменную для диалога и после авторизации вызывать к ней dismiss.
Пытаюсь так
Java
1
    FbDialog fbDialog = new FbDialog(context, action, parameters, listener).show();
но не дает, пишет Type mismatch: cannot convert from void to FbDialog
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:34 #23
есть идея получше, загляните в класс FbDialog и там уже закрывайте его после авторизации просто вызвав dismiss(). чтобы найти место авторизации смотрите где к listener вызывается onComplete.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
07.06.2013, 13:50  [ТС] #24
Вот код этого класса, в 70 строчке добавил dismiss(); и все равно остался.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
 * Copyright 2010-present Facebook
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
package com.facebook.android;
 
import android.content.Context;
import android.os.Bundle;
import com.facebook.*;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.widget.WebDialog;
 
/**
 * This class is deprecated. See {@link com.facebook.widget.WebDialog}.
 */
@Deprecated
public class FbDialog extends WebDialog {
    private DialogListener mListener;
 
    public FbDialog(Context context, String url, DialogListener listener) {
        this(context, url, listener, DEFAULT_THEME);
    }
 
    public FbDialog(Context context, String url, DialogListener listener, int theme) {
        super(context, url, theme);
        setDialogListener(listener);
    }
 
    public FbDialog(Context context, String action, Bundle parameters, DialogListener listener) {
        super(context, action, parameters, DEFAULT_THEME, null);
        setDialogListener(listener);
    }
 
    public FbDialog(Context context, String action, Bundle parameters, DialogListener listener,
            int theme) {
        super(context, action, parameters, theme, null);
        setDialogListener(listener);
    }
 
    private void setDialogListener(DialogListener listener) {
        this.mListener = listener;
        setOnCompleteListener(new OnCompleteListener() {
            @Override
            public void onComplete(Bundle values, FacebookException error) {
                callDialogListener(values, error);
            }
        });
    }
 
    private void callDialogListener(Bundle values, FacebookException error) {
        if (mListener == null) {
            return;
        }
 
        if (values != null) {
            mListener.onComplete(values);
            dismiss(); //добавил
        } else {
            if (error instanceof FacebookDialogException) {
                FacebookDialogException facebookDialogException = (FacebookDialogException) error;
                DialogError dialogError = new DialogError(facebookDialogException.getMessage(),
                        facebookDialogException.getErrorCode(), facebookDialogException.getFailingUrl());
                mListener.onError(dialogError);
            } else if (error instanceof FacebookOperationCanceledException) {
                mListener.onCancel();
            } else {
                FacebookError facebookError = new FacebookError(error.getMessage());
                mListener.onFacebookError(facebookError);
            }
        }
    }
}
Добавлено через 3 минуты
Вы знаете, проблема получается в другом. Это окно диалога сразу открывается два раза. т.е. я запустил авторизацию появилось два окна, я в верхнем прохожу авторизацию и оно закрывается, а под ней просто висит ещё одно с самого начала. Теперь вопрос в том почему оно открывает его два раза и как это избежать?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:53 #25
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Теперь вопрос в том почему оно открывает его два раза и как это избежать?
ну, здесь нужно подебагать или логи добавить чтобы понять почему так происходит.

Добавлено через 38 секунд
может у вас дважды вызывается метод loginFacebook?
1
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
07.06.2013, 14:05  [ТС] #26
Цитата Сообщение от V0v1k Посмотреть сообщение
ну, здесь нужно подебагать или логи добавить чтобы понять почему так происходит.
может у вас дважды вызывается метод loginFacebook?
Подебажив я выяснил. Да у меня два раза запускался метод loginFacebook(); Как только я дубляж убрал, всё стало на свои места. Спасибо огромное - Помогли разобраться!!!!!!!!!!!
0
07.06.2013, 14:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 14:05
Привет! Вот еще темы с решениями:

Как отобразить в диалог окне информацию с БД о записи, на которую кликнул в ListView?
Помогите пожалуйста! Имею Листвью в который выводятся записи из БД через...

Как закрыть фрагмент
Есть главное активити в котором с помощью фрагментов показывается разный...

Как закрыть фрагмент?
Нужно в самом фрагменте завершить его работу и вернуться обратно, как это...

Как закрыть приложение из view activity?
Есть простой класс который расширяется от View в котором нужно завершить другое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru