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

Обратиться к фрагменту находящемуся в ViewPager - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Передать String-путь в EditText AlertDialog'a ? http://www.cyberforum.ru/android-dev/thread1378293.html
Вызывается Алерт диалог, в нем кнопка выбора файла, выбираем файл, получаем его путь, String FilePath = intent.getData().getPath(); в Log.d путь пишет, в этом же диалоге есть поле EditText, в него этот путь надо поместить: делаю как-то так: edittext.setText(FilePath); но такой вариант почему-то не проходит(ошибка), (не знаю где конкретно это должно быть), и постоянно ругается на эту...
Программирование Android Создание проекта в qt creator Добрый всем вечер! Пытаюсь создать приложение на андроид в qt creator, но при дебаге выскакивает ошибка: :-1: error: Packaging Error: Command 'C:/Programms/apache/bin/ant.bat clean debug' failed.Exit code: 2 Вот весь текст ошибки... Creating package file ... Package deploy: Running command 'C:/Programms/apache/bin/ant.bat clean debug'. Registry key 'Software\JavaSoft\Java Runtime... http://www.cyberforum.ru/android-dev/thread1378091.html
С кодом не разберусь Программирование Android
Имеется пример (представлен ниже). Использую его в своей интерпретации, а именно массив yVals надо заполнить собственными значениями. Я конечно начинающий, но блин уже месяц третий как (как никак!) и не пойму почему не проходит мои добавления-изменения в виде (как только for цикл напишу - все методы в ошибке). Моя версия: XYSeries s1 = new XYSeries() { ...
Программирование Android Реализация Яндекс SpeechKit Cloud API
Добрый день! Пытаюсь встроить в своё приложение распознование речи от яндекса. У меня получилось прикрутить к нему SpeechKit SDK, но как оказалось по факту он способен распознавать только не большой текст, и результат отображается весь в конце диктовки + к тому максимальное количество запросов в день не должно превышать 1000, что для моего приложения недопустимо. Мне необходима обработка речи с...
Программирование Android Организация большого массива данных http://www.cyberforum.ru/android-dev/thread1378060.html
Имею около 1600 вопросов по типу: 1 У хворої після підняття важкої сумки раптово з’явився гострий біль у попереку. Рухи в хребті обмежені. Не викликається ахілловий рефлекс зліва, з’явилась анестезія больової чутливості на зовнішній поверхні лівої гомілки. Яке захворювання запідозрите? A *Попереково-крижовий радикуліт B Люмбаго C Люмбалгія D Неврит стегнового нерва
Программирование Android Мини игра для Планшетников под Андроид Доброго времени суток, Уважаемые разработчики. Я здесь очень давно не был, но в последний раз когда был - был очень благодарен за помощь. На этот раз мне бы очень помогли Ваши советы и опыт. Задача такая: Нужно написать игру для планшетников на Андроиде. Задаются 3 вопроса. Если пользователь положительно отвечает на него, прорисовывается в цвет либо собирается фрагмент картинки. Если на 2-й... подробнее

Показать сообщение отдельно
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 123

Обратиться к фрагменту находящемуся в ViewPager - Программирование Android

19.02.2015, 13:33. Просмотров 895. Ответов 2
Метки (Все метки)

Внутри onCreate происходит проверка физических размеров устройства. Если функция проверки возвращает tablet то подгружаем основную активность, в которой объявлены три фрагмента сразу. Если функция проверки возвращает phone , то тогда грузим активность c ViewPager и проводим его инициализацию. Проблема в том как обратиться к фрагмента во втором случае. Представленный код при первой же попытке обращения к фрагменту по id приводит к NullPointerExeption, что вполне понятно, так как фрагмент подгружается динамически в адаптере. В принципе понятно, что нужно ссылаться на объект который создается к классе адаптера, но я никак не могу допереть как это сделать.


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
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        inSys = new InSys();        //Объект бибилиотеки технических функций
        if (inSys.checkDeviceType(this) =="tablet") {       //Проверяем размер экрана, если программа запущена на планшете
            setContentView(R.layout.activity_main);     //то загружаем обычную активноть
        } else {        //если же программа запущена на телефоне
            setContentView(R.layout.activity_main_phone);       //то загружаем активность с ViewPager и проводим его инициализацию
 
            mMainPager = (ViewPager)findViewById(R.id.main_pager);
            mPagerAdapter = new ScreenSliderPagerAdapter(getSupportFragmentManager());
            mMainPager.setAdapter(mPagerAdapter);
        }
 
 
        context = getApplicationContext();      //Получить текущий контекст
 
        android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();       //Медеждер фрагментов
        fragment1 = (Fragment1)fragmentManager.findFragmentById(R.id.fragment1);        //Создание объекта фрагмента белки
        fragment2 = (Fragment2)fragmentManager.findFragmentById(R.id.fragment2);        //Создание объекта фрагмента жиры
        fragment3 = (Fragment3)fragmentManager.findFragmentById(R.id.fragment3);        //Создание объекта фрагмента углеводы
 
 
        tvProtSum = (TextView)fragment1.rootView.findViewById(R.id.protSum);
Последняя строка тут как раз ведет в никуда.

Адаптер
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
private class ScreenSliderPagerAdapter extends FragmentStatePagerAdapter {      //Подкласс адаптера отвечаюзего за инициализацию
        public ScreenSliderPagerAdapter(android.support.v4.app.FragmentManager fm) {        //компонента PageViewer если программу запустили
            super(fm);      // на устройтсве с малым размером экрана
        }
 
        @Override
        public Fragment getItem(int i) {
            Fragment fragment = null;
            if (i == 0) {
                fragment = new Fragment1();
            }
            if (i == 1) {
                fragment = new Fragment2();
            }
            if (i == 2) {
                fragment = new Fragment3();
            }
            return fragment;
        }
 
        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    }
Активность под планшет
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="100">
 
    <fragment
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:name="ru.cerber.kkal.ui.MainActivity.Fragment1"
        android:id="@+id/fragment1"
        android:layout_margin="10dp"
        android:layout_weight="33"
 
        tools:layout="@layout/fragment1" />
 
    <fragment
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:name="ru.cerber.kkal.ui.MainActivity.Fragment2"
        android:id="@+id/fragment2"
        android:layout_margin="10dp"
        android:layout_weight="33"
 
        tools:layout="@layout/fragment2" />
 
    <fragment
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:name="ru.cerber.kkal.ui.MainActivity.Fragment3"
        android:id="@+id/fragment3"
        android:layout_margin="10dp"
        android:layout_weight="33"
 
        tools:layout="@layout/fragment3" />
 
</LinearLayout>
И под телефон
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/main_pager"/>
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru