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

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

07.05.2018, 19:54. Показов 1557. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru