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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
#1

Изменение Activity из ViewPager - Android

04.11.2015, 12:44. Просмотров 316. Ответов 3
Метки нет (Все метки)

Добрый день!

Есть viewPager, который принимает на вход 3 фрагментов и работает с ними.
Активики, в которой расположен viewPager, есть текстовое поле. Хотела сделать так. чтобы при смене фрагмента в viewPager изменялся текст в активити. Второй текстовый элемент не изменяется. просто показывает сколько есть страниц. Но не получается так сделать.

Пробовала получать активити из фрагмента, потом устанавливать вручную номер страницы, но "практика показала", что после добавления классов-фрагментов в лист Фрагментов остаётся последний номер. т.е.. текстВью бы показывали, например, 25 из 25. А нуно 1 из 25, 14 из 25 и тд.


Где подключается и работает вьюпейджер.
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
package test.ru.simpledesign;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.widget.TextView;
 
import java.util.ArrayList;
import java.util.List;
 
public class SimpleDesignerPage extends FragmentActivity
{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.simpledesign);
        initViewPager();
    }
 
    private void initViewPager() {
        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
        List<Fragment> fragments = new ArrayList<Fragment>();
 
        fragments.add(Fragment.instantiate(this, jf1.class.getName()));
        fragments.add(Fragment.instantiate(this, jf2.class.getName()));
        fragments.add(Fragment.instantiate(this, jf3.class.getName()));
 
        TextView tvM2 = (TextView) findViewById(R.id.tvMain2);
        tvM2.setText(Integer.toString(fragments.size()));
 
        pager.setAdapter(new PagerAdapter(getSupportFragmentManager(), fragments));
    }
}
Реализация абстрактного класса PagerAdapter.
Я использую FragmentStatePagerAdapter, потому что фрагментов будет очень много, порядка 50-100. Может ли это быть причиной. что не могу изменить страницу текущего фрагмента в активити?
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
package octoprog.ru.simpledesign;
 
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
 
import java.util.List;
 
public class PagerAdapter extends FragmentStatePagerAdapter {
 
    private List<Fragment> fragments;
 
    public PagerAdapter(FragmentManager manager, List<Fragment> fragments) {
        super(manager);
        this.fragments = fragments;
    }
    @Override
    public Fragment getItem(int index) {
        return fragments.get(index);
    }
    @Override
    public int getCount() {
        return fragments.size();
    }
}
Пример класса фрагмента
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package octoprog.ru.simpledesign;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class jf1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.f1, container, false);
    }
}
Ка выглядит окно (разметка) активити, где вьюпейджер есть
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#fff780">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">
 
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#ffd16e">
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
 
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_margin="5dp"
                android:textSize="10pt"
                android:id="@+id/tvMain1"
                />
 
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_margin="10dp"
                android:textSize="10pt"
                android:id="@+id/tvMain2"
                />
 
        </FrameLayout>
 
    </LinearLayout>
 
</LinearLayout>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2015, 12:44     Изменение Activity из ViewPager
Посмотрите здесь:

ViewPager Android
Android ViewPager
ViewPager Indicator Android
Android Поворот ViewPager
Android ViewPager и ListView
ViewPager Android
Android Изменение background layout 'а сторонней Activity
Android Изменение размера Activity
ViewPager автодаводка Android
Android ViewPager и Tab
ViewPager (Tabbed activity) как добавить данные на сраницы? Android
Изменение TextView во второй Activity Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zealot01
42 / 42 / 16
Регистрация: 24.08.2015
Сообщений: 136
Завершенные тесты: 1
04.11.2015, 14:02     Изменение Activity из ViewPager #2
Nullik, Номер страницы текущего фрагмента можно получить через setOnPageChangeListener
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     pager.setOnPageChangeListener(new OnPageChangeListener() {
 
      @Override
      public void onPageSelected(int position) {
        Log.d(TAG, "onPageSelected, position = " + position);
      }
 
      @Override
      public void onPageScrolled(int position, float positionOffset,
          int positionOffsetPixels) {
      }
 
      @Override
      public void onPageScrollStateChanged(int state) {
      }
    });
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
04.11.2015, 16:05  [ТС]     Изменение Activity из ViewPager #3
эту штуку я знаю, делала, но возможно не там сделала? из-за чего всё потом работать вообще перестало

Куда мне нужно это добавить? Подскажите конкретный файл, класс и метод.
zealot01
42 / 42 / 16
Регистрация: 24.08.2015
Сообщений: 136
Завершенные тесты: 1
04.11.2015, 22:41     Изменение Activity из ViewPager #4
Nullik, Попробуй добавить сразу после pager.setAdapter
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pager.setOnPageChangeListener(new OnPageChangeListener() {
             
              @Override
              public void onPageSelected(int position) {
                TextView tvM1 = (TextView) SimpleDesignerPage.this.findViewById(R.id.tvMain1);
                        tvM1.setText(Integer.toString(position));
              }
         
              @Override
              public void onPageScrolled(int position, float positionOffset,
                  int positionOffsetPixels) {
              }
         
              @Override
              public void onPageScrollStateChanged(int state) {
              }
            });
Yandex
Объявления
04.11.2015, 22:41     Изменение Activity из ViewPager
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru