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

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

Войти
Регистрация
Восстановить пароль
 
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
#1

Context немного теории - Android

02.04.2014, 12:48. Просмотров 602. Ответов 5
Метки нет (Все метки)

Вообщем нужно мне было запустить из метода своего класса фрагмент. Вообщем как положено передал в класс контекст все дела.

Java
1
2
3
4
5
6
public Constructor (Context ctx) {
        super(ctx);
        this.ctx = ctx;
ctx.getSupportFragmentManager().beginTransaction()
    .add(R.id.container, frag).commit();
    }
компилятор писал, что getSupportFragmentManager() не существует. тогда заменил все это дело на следующее.

Java
1
2
3
4
5
6
public Constructor (MainActivity mainActivity) {
        super(mainActivity);
        this.ctx = ctx;
mainActivity.getSupportFragmentManager().beginTransaction()
    .add(R.id.container, frag).commit();
    }
тогда ошибка перестала выскакивать.При том что при объявлении класса как было
Java
1
new Constructor(this)
ток и осталось. В чем разница между конструкторами? Объясните пожалста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 12:48     Context немного теории
Посмотрите здесь:

Android Fragment and context
AsyncTask должен использовать Context Android
Android Вызов методов Context из статичного контекста
Подкиньте немного теории по "слушателям" Android
Можно ли так передавать context? Android
Android Аналог context menu
Объект Context Android
Программирование Android. Context Android
Использование Context в других классах Android
Android Context - ошибка
Android Как получить context MainActivity в Service?
Android Ошибка VKSdk.initialize(Context) must be call from Application#onCreate()

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
02.04.2014, 13:30     Context немного теории #2
Activity наследует Context, т.е. то что есть в классе Context есть и в классе Activity, но не обратное.
Разницы нет, в обоих случаях передается Activity.
Java
1
2
3
4
5
6
    public Constructor (Context ctx) {
        super(ctx);
        this.ctx = ctx;
        ((FragmentActivity)ctx).getSupportFragmentManager().beginTransaction()
                .add(R.id.container, frag).commit();
    }
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
02.04.2014, 14:33  [ТС]     Context немного теории #3
Netscape, вот и я думаю вроде как одно и тоже но не работает. Только не понятно почему не срабатывает преобразование типов.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
02.04.2014, 15:26     Context немного теории #4
KillAndEat, ну оно вроде как тут и не должно срабатывать.
Класс Context не в курсе что за метод getSupportFragmentManager и все, также он не в курсе что существует класс Activity, который его наследует.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
02.04.2014, 15:29  [ТС]     Context немного теории #5
понял. метод принадлежит активити. В таком случае что значит это комбинация?

Java
1
((FragmentActivity)ctx)
ручное преобразование же?
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
02.04.2014, 15:30     Context немного теории #6
Цитата Сообщение от KillAndEat Посмотреть сообщение
ручное преобразование же?
Да, оно самое.
Yandex
Объявления
02.04.2014, 15:30     Context немного теории
Ответ Создать тему
Опции темы

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