Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361

Получить доступ к кнопке из фрагмента

07.05.2018, 19:54. Показов 1576. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть фрагмент в котором ViewPager c фрагментами( через FragmentStatePagerAdapter) и кнопка. Не пойму как получить из фрагментов viewpager доступ к ней?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2018, 19:54
Ответы с готовыми решениями:

Переход по кнопке с фрагмента на активити
Парюсь с этим очень долго, никак не могу найти как осуществить переход по кнопке с фрагмена на активити, можно пожалуйста пример кода.

Доступ к элементу фрагмента
Ув. форумчане, помогите, пожалуйста, разобраться с проблемой. Имеется фрагмент (fragment_1). На нем расположены ProgressBar и...

Доступ к виджету фрагмента
Пытаюсь добавить фрагмент в контейнер и получить доступ к его кнопке frag1 = new Fragment1(); getSupportFragmentManager() ...

4
31 / 29 / 8
Регистрация: 07.01.2017
Сообщений: 205
08.05.2018, 16:28
В том фрагменте в котором размещена кнопка инициализируешь в методе onCreateView и дальше все как обычно. Вешаешь слушатель и действие
И адаптер тут не причем
1
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
08.05.2018, 16:39  [ТС]
Mail-up,у меня на кнопке в слушателе вызывается активность, а результат надо во фрагмент в адаптаре отдать. В нем список, и в этот список добавить результат.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
08.05.2018, 17:59
Код показывай и что сделать надо, это словоблудие вообще никакой ясности не вносит.
1
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
09.05.2018, 15:01  [ТС]
вот фрагмент, в нем кнопка и вьюпейджер:

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
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinator"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/linearLayout"
        style="@style/MyConstrateLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <android.support.v4.view.ViewPager
            android:id="@+id/fragment_viewpager"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintBottom_toBottomOf="parent">
            <android.support.design.widget.TabLayout
                android:id="@+id/fragment_tab_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabTextColor="@color/colorTextTab"
                app:tabSelectedTextColor="@color/colorTextTab"
                style="@style/MyTabLayout"
                android:layout_gravity="top"
                app:tabMode="scrollable">
            </android.support.design.widget.TabLayout>
        </android.support.v4.view.ViewPager>
    </android.support.constraint.ConstraintLayout>
 
  <android.support.design.widget.FloatingActionButton
        android:id="@+id/fragment_add_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end|right"
        android:layout_margin="@dimen/fab_margin"
              app:srcCompat="@android:drawable/ic_menu_add" />
</android.support.design.widget.Coordinato rLayout>


во фрагменте через адаптер FragmentStatePagerAdapter, порождаю несколько вот таких фрагментов, с recyclerView
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinator"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        style="@style/RecyclerView"
        android:id="@+id/list_fragment_for_view_pager_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
</android.support.design.widget.CoordinatorLayout>

во фрагменте с пейджером который:
--********
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
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        View inflate = inflater.inflate(R.layout.fragment, container, false);
        iTitlable.setTitle(getResources().getString(R.string.fragment_title)); // интерфейс для заголовка...
       
         viewPager = inflate.findViewById(R.id.fragment_viewpager); // вот наш пейджер с фрашментами
        tabLayout = inflate.findViewById(R.id.fragment_tab_layout);
        addFab = inflate.findViewById(R.id.fragment_add_fab); // вот та самая кнопка
        viewPager.setAdapter(pagerAdapter);  // адаптер где рождаюся внутренние фрагменты
        tabLayout.setupWithViewPager(viewPager);
        setPageTransform();
 
        addFab.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
 
       // вот здесь открыавю активити, но результат вернется в этот фрагмент, а чтобы он вернулся во внутренний фрагмент 
           вьюпейджера, нужно вызвать активити  из того фрагмента. Но 
 
                 Intent intent = CreateActivity.createIntent(getContext());
                startActivityForResult(intent, REQUEST_CODE_CREATE);
 
           }
       });
 
        return inflate;
    }
Добавлено через 2 минуты
Была мысль по клику на кнопке у пейджера получать текущий фрагмент, кастовать его какому нить интерфейсу реализованому во фрагменте с запуском активити.

Добавлено через 49 минут
и даже сделал:
внутренний фрагмент реализовывает интерфейс

Java
1
2
3
public interface IStartActivity {
    void test();
}
т.е. в основновном фрагменте по по клику по кнопке теперь:
Java
1
2
3
4
5
6
7
8
addFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int currentItem = viewPager.getCurrentItem();
                IStartActivity item = (IStartActivity) pagerAdapter.getItem(currentItem);
                item.test();
            }
        });
но во внутреннем фрагменте при создании инициализируется переменнаая String test, и она всегда null по клику на кноке, а должна быть 4.

Java
1
2
3
4
5
6
7
8
9
10
11
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
             test = "4";
      
    }
 
    @Override
    public void startActivity() {
        System.out.println(test);
    }
Добавлено через 45 минут
В общем разобрался. Надо было в адаптаре сделать список создаваемых фрагментов и метод с получением фрагмента по позиции. А дальше дергать через интерфейс нужный фрагмент и запускать из него активность.
Java
1
2
3
4
5
6
7
8
addFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int currentItem = viewPager.getCurrentItem();
                IStartActivity item = (IStartActivity) pagerAdapter.get MyMethod Item(currentItem); // метод в адаптаре
                item.test();
            }
        });
Добавлено через 19 часов 2 минуты
Работает до поворота экрана.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2018, 15:01
Помогаю со студенческими работами здесь

Доступ к кнопке другой формы
Подскажите как получить доступ к кнопке с одной формы на другую первая форма public partial class Autorize : Form { private...

Доступ к кнопке с ссылкой на сайте и копирование ссылки
Что-то я не нашел толком ничего полезного на просторах... Быть может я и плохо искал. На сайте есть кнопка, к ней привязана ссылка на...

Получить доступ к сайту если есть доступ на сервер
Друг подкинул номер телефона человека, у человека умер web-master теперь человеку нужно восстановить пароль к сайтам, пароль к серверу у...

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

Как получить доступ к ftp, http и ssh по VPN через роутер, если есть доступ к samba?
Есть системник с Ubuntu Server 12.04. Он находится за роутером. На системнике стоит PPTP VPN. На роутере проброшены vpn порты на системник,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru