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

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

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

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

17.10.2015, 19:01. Просмотров 181. Ответов 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 вам уже не надо.
Но приложение вылетает. Помогите пожалуйста, может я где-то ошибся?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 19:01     Ссылка на фрагмент
Посмотрите здесь:

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

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

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

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

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

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

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

Доступ из активити в фрагмент - Программирование Android
Здравствуйте, такой вопрос есть активити import java.io.File; import java.io.IOException; import...

Фрагмент и статическое поле - Программирование Android
В моем приложении динамическая реализация фрагментов. В методе onClick записи типа case R.id.home: ...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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