Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

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

Как закрыть диалог - Android

04.06.2013, 02:57. Просмотров 2158. Ответов 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) {
 
                            // функция фейсбучной ошибки
                        }
                    });
        }
                    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 02:57     Как закрыть диалог
Посмотрите здесь:

Android Как закрыть приложение из view activity?
Как заставить Activity оставаться открытой, пока в ней отображается диалог? Android
Как обработать диалог? Android
Android Как отобразить в диалог окне информацию с БД о записи, на которую кликнул в ListView?
Как повесить прогресс диалог секунд на 10? Android
Диалог как в analog clock Android
Закрыть диалог во время выполнения процесса (принудительное срабатывание dismiss() Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:27     Как закрыть диалог #21
добавить переменную для диалога и после авторизации вызывать к ней dismiss.
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
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:34     Как закрыть диалог #23
есть идея получше, загляните в класс FbDialog и там уже закрывайте его после авторизации просто вызвав dismiss(). чтобы найти место авторизации смотрите где к listener вызывается onComplete.
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 минуты
Вы знаете, проблема получается в другом. Это окно диалога сразу открывается два раза. т.е. я запустил авторизацию появилось два окна, я в верхнем прохожу авторизацию и оно закрывается, а под ней просто висит ещё одно с самого начала. Теперь вопрос в том почему оно открывает его два раза и как это избежать?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.06.2013, 13:53     Как закрыть диалог #25
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Теперь вопрос в том почему оно открывает его два раза и как это избежать?
ну, здесь нужно подебагать или логи добавить чтобы понять почему так происходит.

Добавлено через 38 секунд
может у вас дважды вызывается метод loginFacebook?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 14:05     Как закрыть диалог
Еще ссылки по теме:

Как закрыть фрагмент? Android
Как закрыть фрагмент Android
Как передавать динамические данные (координаты GPS) из активити в диалог? Android
Как закрыть приложение при нажатии кнопки back или home? Basic4Android
Searchview закрыть поиск программно, также как закрывается кнопкой back Android

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

Или воспользуйтесь поиском по форуму:
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
07.06.2013, 14:05  [ТС]     Как закрыть диалог #26
Цитата Сообщение от V0v1k Посмотреть сообщение
ну, здесь нужно подебагать или логи добавить чтобы понять почему так происходит.
может у вас дважды вызывается метод loginFacebook?
Подебажив я выяснил. Да у меня два раза запускался метод loginFacebook(); Как только я дубляж убрал, всё стало на свои места. Спасибо огромное - Помогли разобраться!!!!!!!!!!!
Yandex
Объявления
07.06.2013, 14:05     Как закрыть диалог
Ответ Создать тему
Опции темы

Текущее время: 17:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru