Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 34

Как из Активити получить ссылки на элементы, которые находятся во фрагментах?

21.12.2018, 23:13. Показов 1115. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Гуглил, не нашел.

Как из Активити получить ссылки на элементы, которые находятся во фрагментах? Пробовал такие варианты, т.к. ничего другого не придумал, но они в результате NULL:

TextView textView = (TextView) new Fragment1().textView;

TextView textView = (TextView) new Fragment1().getView().findViewById(R.id. textView);

Есть ли верные варианты?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2018, 23:13
Ответы с готовыми решениями:

Как получить все ссылки на страницы сайта, которые находятся в выдаче гугл?
Как получить все ссылки на страницы сайта, которые находятся в выдаче гугл? Нужно считывать все ссылки которыые находятся в выдаче у...

Как получить элементы матрицы, которые находятся ниже побочной диагонали?
работа с матрицами. как описать элементы, которые находятся ниже побочной диагонали? если можно, то дайте пример пожалуйста

Как получить свойства классов, которые находятся в коллекции
Здравствуйте. Извините, если тему назвал некорректно. Свой класс. Экземпляры объеденены в коллекцию. Public Class Form1 Private...

11
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
22.12.2018, 12:37
Во-первых, в своем примере ты пытаешься вытянуть элемент из Фрагмента, который не будет отображен (простыми словами). Во-вторых: опиши, пожалуйста, ситуацию, когда тебе необходимо в Activity обрабатывать действия над элементами из Фрагмента?
1
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 34
22.12.2018, 15:08  [ТС]
Цитата Сообщение от jaman_smk Посмотреть сообщение
Во-первых, в своем примере ты пытаешься вытянуть элемент из Фрагмента, который не будет отображен (простыми словами). Во-вторых: опиши, пожалуйста, ситуацию, когда тебе необходимо в Activity обрабатывать действия над элементами из Фрагмента?
Спасибо за отклик. Сначала у меня было все сделано с помощью Активити, все работало, но решил перейти на фрагменты.

Опишу ситуацию. Я хотел по общей кнопке "Обновить", которая находится в ActionBar, загружать данные и заполнять ими списки, которые находятся в Фрагментах Активити. Проблема в том, что данные получаю, но списки не заполняются. Я подозреваю, что это из-за того, что действие кнопки "Обновить" находится в классе Активити, и фрагменты просто как бы "не знают", что инициировано какое-либо действие.

Код (здесь пытаюсь в параметрах передать ссылки на элементы, которые находятся в фрагментах, но они NULL):

1) Кнопка Обновить в ActionBar'е (этот кусок кода находится в классе Активити):
Java
1
2
3
4
5
6
7
8
9
10
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        if (id == R.id.update) {
            new MyAsyncTask1 (this, listView, textView).execute();
        }
 
        return super.onOptionsItemSelected(item);
    }
2) Один из фрагментов:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MyFragment1 extends Fragment {
 
    public MyFragment1(){}
 
    *** переменные
 
    View viewF1;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
        viewF1 = inflater.inflate(R.layout.f1, container, false);
 
        listView = (ListView) viewF1.findViewById(R.id.listViewf1);
 
        return viewF1;
    }
}
3) Код АсинкТаска:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
public class MyAsyncTask1 extends AsyncTask<Void, Void, Void> {
    String content;
    Document doc = null;
    private Context mContext;
    ListView mListView;
 
    public MyAsyncTask1 (Context context, ListView listView, TextView textView) {
        mContext = context;
        mListView = listView;
        mTextView = textView;
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
 
    @Override
    protected Void doInBackground(Void... params) {
 
        try {
            String url = mContext.getResources().getString(R.string.text);
            doc = Jsoup.connect(url).userAgent("Mozilla").get();
            content = doc.getElementById("json").text();
 
        } catch (Exception e) {
 
        } finally {
 
        }
 
        return null;
    }
 
    @Override
    protected void onPostExecute(Void result) {
 
        try {
 
            String TEXT1 = "text1";
            String TEXT2 = "text2";
            String TEXT3 = "text3";
            String TEXT4 = "text4";
 
 
            ArrayList<Map<String, Object>> data;
            Map<String, Object> hashMap;
 
            SimpleAdapter simpleAdapter;
 
            Gson gson = new Gson();
            Pojo pojo = gson.fromJson(content, Pojo.class);
 
            data = new ArrayList<Map<String, Object>>();
 
            for (int i = 0; i < MyArray.length; i++) {
                hashMap = new HashMap<String, Object>();
                hashMap.put(TEXT1, MyArray2[i]);
                hashMap.put(TEXT2, MyArray3[i]);
                hashMap.put(TEXT3, MyArray4[i]);
                hashMap.put(TEXT4, MyArray5[i]);
                data.add(hashMap);
            }
 
            String[] from = {TEXT1, TEXT2, TEXT3, TEXT4};
            int[] to = {R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4};
 
            simpleAdapter = new SimpleAdapter(mContext, data, R.layout.detail, from, to);
            mListView.setAdapter(simpleAdapter);
 
        } catch (Exception e) {
 
        }
    }
}
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
22.12.2018, 15:46
ActionBar сделать во фрагменте.
1
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 34
22.12.2018, 15:48  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
ActionBar сделать во фрагменте.
Я про это думал, но тогда фрагменты не будут одновременно запрашивать обновления, или я ошибаюсь? Задумка была, чтобы за один раз запрашивать обновления и все фрагменты бы их получили. Так не получится?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
22.12.2018, 16:18
Вью - это вью, а данные сами по себе, они не должны быть завязаны друг на друга. Оптимально будет закешировать данные и тащить их уже откуда угодно. Ну или в каждом фрагменте делать запрос за данными для этого фрагмента. Короче вариантов много, без полной картины непонятно.
1
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
22.12.2018, 17:01
androbv, ты можешь использовать единый ActionBar из Activity в разных фрагментах. Обработку нажатия на кнопку оставить в Activity. Данные можно кешировать, как предложил ExFau$t, а Фрагменты обновлять при помощи callback'ов.
1
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 34
22.12.2018, 17:54  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Вью - это вью, а данные сами по себе, они не должны быть завязаны друг на друга. Оптимально будет закешировать данные и тащить их уже откуда угодно. Ну или в каждом фрагменте делать запрос за данными для этого фрагмента. Короче вариантов много, без полной картины непонятно.
Это я понимаю, что не завязаны. Картинку прикрепил, как бы я хотел сделать.

Цитата Сообщение от jaman_smk Посмотреть сообщение
ты можешь использовать единый ActionBar из Activity в разных фрагментах. Обработку нажатия на кнопку оставить в Activity. Данные можно кешировать, как предложил ExFau$t, а Фрагменты обновлять при помощи callback'ов.
Посмотрю callback'и, может найду решение.

Не знаю, ответите ли еще, т.к. не знаю, исчерпана ли тема или можно еще что-то добавить, в любом случае я очень вам всем признателен. Спасибо всем за отклики!
Миниатюры
Как из Активити получить ссылки на элементы, которые находятся во фрагментах?  
0
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
22.12.2018, 18:00
androbv, смотри, ты можешь в обработчике нажатия кнопки в ActionBar'е обновлять отображаемый Фрагмент, для остальных - кешировать данные (так будет оптимальнее, при переходе на следующий Фрагмент, информация должна браться из кеша). Брать фрагменты можно через FragmentManager, можно сделать маркировку всех фрагментов, где есть необходимость обновления данных (в зависимости от реализации навигации по приложению), через интерфейс.
1
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
22.12.2018, 18:07
Обновление данных я бы делал через swipeRefresh для каждого фрагмента.
1
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 34
22.12.2018, 18:20  [ТС]
Цитата Сообщение от jaman_smk Посмотреть сообщение
смотри, ты можешь в обработчике нажатия кнопки в ActionBar'е обновлять отображаемый Фрагмент, для остальных - кешировать данные (так будет оптимальнее, при переходе на следующий Фрагмент, информация должна браться из кеша). Брать фрагменты можно через FragmentManager, можно сделать маркировку всех фрагментов, где есть необходимость обновления данных (в зависимости от реализации навигации по приложению), через интерфейс.
Цитата Сообщение от ExFau$t Посмотреть сообщение
Обновление данных я бы делал через swipeRefresh для каждого фрагмента.
Парни, большое спасибо за интересные решения и подробные разъяснения, донимать больше не буду, и так чувствую себя неудобно, что люди тратят свое время на ответы. Всем спасибо! А я пошел пробовать эти решения
0
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
22.12.2018, 18:45
androbv, ничего страшного в том, чтобы спросить, нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2018, 18:45
Помогаю со студенческими работами здесь

Как получить список всех контролов которые находятся в groupbox
Здравствуйте .Подскажите пожалуйста как можно получить список контролов в групбоксе( так чтобы потом ими можно было управлять, там например...

twebbrowser Как получить ссылки на которые ведут картинки?
Как получить ссылки на которые ведут картинки? &lt;a href=&quot;нужно узнать что тут для данной картинки&quot;&gt;&lt;img...

Получить все разделы, которые находятся в разделе shell с реестра
Здравствуйте, как можно вытащить все разделы которые находятся в HKEY_CLASSES_ROOT\DesktopBackground\Shell\ ?

Получить среднеарифметическое значение чисел которые находятся в заданном интервале
Доброй ночи 1) Консольное приложение; 2) ввести ряд чисел (беспорядочно); 3) задать интервал (необходимо в следующем числе) 4)...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru