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

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

Войти
Регистрация
Восстановить пароль
 
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 873
#1

Ссылка на фрагмент - Программирование Android

17.10.2015, 19:01. Просмотров 197. Ответов 0
Метки нет (Все метки)

В уроке 106 проекта startandroid.ru написано, что
На всякий случай проговорю одну вещь из разряда «Спасибо кэп!». Если посмотреть на код MainActivity, то можно заметить, что работая с frag2 в методе onCreate и с frag2 в методе onClick мы работаем с текущим фрагментом Fragment2. Это так и есть. Оба frag2 в итоге будут ссылаться на один объект. Так что, если вы динамически добавили фрагмент, то у вас уже есть ссылка на него, и искать его через findFragmentById вам уже не надо.
Звучит логично, вот код MainActivity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fragment frag2 = new Fragment2();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(R.id.fragment2, frag2);
        ft.commit();
    }
 
    public void onClick(View v) {
        Fragment frag2 = getFragmentManager().findFragmentById(R.id.fragment2);
        ((TextView) frag2.getView().findViewById(R.id.textView))
                .setText("Access to Fragment2 from Activiry");
    }
Я решил данное утверждение проверить-изменил код так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MainActivity extends AppCompatActivity {
    Fragment frag2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fragment frag2 = new Fragment2();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(R.id.fragment2, frag2);
        ft.commit();
    }
 
    public void onClick(View v) {
        Fragment frag1 = getFragmentManager().findFragmentById(R.id.fragment1);
        ((TextView) frag1.getView().findViewById(R.id.textView))
                .setText("Access to Fragment1 from Activiry");
 
       // Fragment frag2 = getFragmentManager().findFragmentById(R.id.fragment2);
        ((TextView) frag2.getView().findViewById(R.id.textView))
                .setText("Access to Fragment2 from Activiry");
    }
Т.е. я объявил глобальную переменную frag2, и теперь хочу обратиться к фрагменту без поиска(закомментированная строка), как пишет автор,
Так что, если вы динамически добавили фрагмент, то у вас уже есть ссылка на него, и искать его через findFragmentById вам уже не надо.
Но приложение вылетает. Помогите пожалуйста, может я где-то ошибся?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылка на фрагмент (Программирование Android):

Из Активити в Фрагмент - Программирование Android
Как передать данные из активити в фрамгент? пробую так но выкидывает из приложения Fragment f =...

Фрагмент и карты - Программирование Android
прочитал что MapView должен быть обязательным образом наследован от MapActivity как можно MapActivity превратить в один из фрагментов ? ...

CursorLoader и фрагмент - Программирование Android
Возникла проблема. Используя в фрагменте CursorLoader в методе "onLoadFinished()" падает ошибка "Failed to read row 0, column -1 from a...

Не создается фрагмент - Программирование Android
При запуске приложения отображается фрагмент (fragment1) этот фрагмент имеет кнопку при нажатии на которую запускается другой фрагмент...

Фрагмент во фрагменте - Программирование Android
Добрый день. А возможно ли создание фрагмента состоящего из нескольких фрагментов?

Активити и фрагмент - Программирование Android
в фрагменте у меня есть функция public void setBmp(Bitmap bmp) { } в активити я использую Fragment f =...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2015, 19:01
Привет! Вот еще темы с ответами:

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

OnActivityResult из сервис во фрагмент - Программирование Android
Здравствуйте,есть акивити которая запускает мой сервис. после запуска, сервис должен отослать данные во фрагмент. по логам показывает...

Фрагмент поверх другого - Программирование Android
Меняю фрагменты след. кодом: public void fragmentChange(int id, boolean addToBackStack){ FragmentTransaction fTrans =...

Переход из ListActivity в Фрагмент - Программирование Android
Всех с праздниками. Подскажите как реализовать переход из Activity в котором есть ListView во фрагмент? (в списоке listView) ...


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

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

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