Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 949
#1

Ссылка на фрагмент

17.10.2015, 19:01. Просмотров 223. Ответов 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
Ответы с готовыми решениями:

CursorLoader и фрагмент
Возникла проблема. Используя в фрагменте CursorLoader в методе "onLoadFinished()" падает ошибка...

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

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

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

Активити и фрагмент
в фрагменте у меня есть функция public void setBmp(Bitmap bmp) { } в активити я...

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

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

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

Вернуться во фрагмент с данными?
Имеется фрагмент с картой с которого пользователь может перейти на фрагмент указания точного...


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

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

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