4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
1

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

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

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть фрагмент в котором ViewPager c фрагментами( через FragmentStatePagerAdapter) и кнопка. Не пойму как получить из фрагментов viewpager доступ к ней?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2018, 19:54
Ответы с готовыми решениями:

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

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

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

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

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

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.CoordinatorLayout>


во фрагменте через адаптер 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2018, 15:01
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru