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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android MaterialDrawer для eclipse http://www.cyberforum.ru/android-dev/thread1554647.html
Как правильно подключить MaterialDrawer библиотеку на эклипс? Через импорт разбивает на два не связанных проекта.
Программирование Android SQLiteDatabase, составление запроса для сортировки типа дерево здравствуйте, есть ListView который выгружает из базы позиции. как сделать так чтобы после каждого нажатия на позицию формировался(добавлялся) запрос для поиска значений? например есть база дома... http://www.cyberforum.ru/android-dev/thread1554644.html
Скопировать view Программирование Android
Привет. Как скопировать view(любой компонент от view) с одного layuot на другой без удаления, тоесть хочу создать клона только сменив ему id и расположение на экране, а всё остальное оставить от...
Программирование Android Отображение полного наименования функции или аттрибута в Class Diagram
как в Android Studio сделать,чтобы полностью отображалось наименование функции или аттрибута в Class Diagram?
Программирование Android Action Bar в Activity для навигации по фрагментам в TabHost-е http://www.cyberforum.ru/android-dev/thread1554497.html
Здравствуйте. Есть главная Activity наследуемая от TabHost. Использую TabHost специально, чтобы вкладки не свайпились, т.к. на одной из вкладок будет график, который возможно масштабировать и двигать...
Программирование Android Вид DatePickerDialog Всем привет! Столкнулся с необходимостью при нажатии кнопки выводить DatePickerDialog, как в документации: Но при выводе DatePickerDialog, в эмуляторе показывается следующий вид: ... подробнее

Показать сообщение отдельно
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 873

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

17.10.2015, 19:01. Просмотров 194. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru