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

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

Войти
Регистрация
Восстановить пароль
 
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 446
#1

Как отобразить ViewPager внутри другой активити - Программирование Android

13.10.2013, 12:28. Просмотров 865. Ответов 1
Метки нет (Все метки)

Подскажите пожалуйста. Изучил данный урок. И хочу сделать такую прокрутку страниц внутри класса, который наследуются от активити, а не от ФрагментАктивити. Прикладываю проект. Посмотрите пожалуйста у кого есть время. Спасибо.

Вкратце, что я хочу сделать:

Есть активити1 - это главная активность. В ней находится еще лэйаут1. Допустим в лэйауте1 я хочу отобразить мой прокручивающийся вью из этого урока. Проблема на данный момент заключается в том, что главная активи наследуется от Activity, и нельзя прям из нее все делать. Нужно в лэйаут1 ложить лэйаут из файла, который наследуется от FragmentActivity. И я уже запутался и не смог придумать как же из главного активити запустить второе активити, чтобы оно показывалось в первом и прокручивало свой лэйаут толкьо в лэйауте номер 1.

class ActivityTwo

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
 
public class ActivityTwo extends FragmentActivity 
{
    static final String TAG = "MyLog2";
    static final int PAGE_COUNT = 10;
 
    ViewPager pager;
    PagerAdapter pagerAdapter;
 
    /*
     В onCreate создаем адаптер и устанавливаем его для ViewPager. Также для ViewPager создаем обработчик 
     событий. Он имеет три метода:
        onPageSelected – дате номер текущей отображенной страницы
        onPageScrolled – достаточно сложно объяснить на словах. Метод дает нам представление о текущем значении скроллера при 
пролистывании. Рекомендую поставить там запись в лог, полистать и посмотреть, что получается.
        onPageScrollStateChanged – сообщает нам о состоянии, в котором находится скроллер 
                                   (    SCROLL_STATE_IDLE – ничего не скролится, 
                                    SCROLL_STATE_DRAGGING – пользователь «тащит» страницу, 
                                    SCROLL_STATE_SETTLING – скроллер долистывает страницу до конца)
 
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        pager = (ViewPager) findViewById(R.id.pager);
        pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
 
        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) 
            {
            }
        });
    }
    
    /*
     * Класс FragmentPagerAdapter - абстрактный. Нам надо реализовать в нем пару методов. Для этого создаем 
     * класс MyFragmentPagerAdapter. В нем реализуем методы:
        getItem – по номеру страницы нам надо вернуть фрагмент, используем наш метод newInstance
        getCount – здесь мы должны возвращать кол-во страниц, используем константу
     */
    
    // обязательно помещаем PagerTitleStrip внутрь ViewPager. (смотри xml)
    
    /*
     * PagerTabStrip
       Заголовки могут участвовать в навигации. Для этого используется компонент PagerTabStrip. 
       Это аналог PagerTitleStrip, но при нажатии на заголовок он перелистывает страницу. 
       Его встраивание полностью аналогично только что рассмотренному PagerTitleStrip
     */
    private class MyFragmentPagerAdapter extends FragmentPagerAdapter 
    {
        public MyFragmentPagerAdapter(FragmentManager fm) 
        {
            super(fm);
        }
 
        // метод getPageTitle, чтобы PagerTitleStrip знал какой текст показывать в заголовке.
        @Override
        public CharSequence getPageTitle(int position) 
        {
          return "Title " + position;
        }
        
        @Override
        public Fragment getItem(int position) 
        {
            return PageFragment.newInstance(position);
        }
 
        @Override
        public int getCount() 
        {
            return PAGE_COUNT;
        }
    }
}

class MainActivity

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
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
 
public class MainActivity extends Activity
{
    public View view;
    public LayoutInflater layoutInflater;
    public LinearLayout lLay;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        
        //Intent intent = new Intent(this, ActivityTwo.class);
        //startActivity(intent);
        
        lLay = (LinearLayout) findViewById(R.id.lLay1);
        view = ((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.main, null, false);
        lLay.addView(view);
    }
}
class PageFragment

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.Random;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
 
public class PageFragment extends Fragment 
{
  static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
  
  int pageNumber;
  int backColor;
  
  /*
   * newInstance создает новый экземпляр фрагмента и записывает ему в атрибуты число, 
   * которое пришло на вход. Это число – номер страницы, которую хочет показать ViewPager. 
   * По нему фрагмент будет определять, какое содержимое создавать в фрагменте.
   */
  static PageFragment newInstance(int page) 
  {
    PageFragment pageFragment = new PageFragment();
    Bundle arguments = new Bundle();
    
    arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
    
    pageFragment.setArguments(arguments);
    
    return pageFragment;
  }
  
  /*
   * onCreate читаем номер страницы из аргументов. Далее формируем цвет из рандомных компонентов. 
   * Он будет использоваться для фона страниц, чтобы визуально отличать одну страницу от другой.
   */
  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
    
    Random rnd = new Random();
    backColor = Color.argb(40, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
  }
  
  /* 
   *  В onCreateView создаем View, находим на нем TextView, пишем ему простой текст с номером страницы и ставим фоновый цвет.
   */
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
  {
    View view = inflater.inflate(R.layout.fragment, null);
    
    TextView textNameMagic = (TextView) view.findViewById(R.id.magic_text_name);
    textNameMagic.setText("Page " + pageNumber);
    
    TextView textDescription = (TextView) view.findViewById(R.id.text_description_magic);
    textDescription.setText("Page " + pageNumber);
    
    ImageView imageView = (ImageView)view.findViewById(R.id.magic_image);
    
    return view;
  }
}
0
Вложения
Тип файла: rar test_Fragment.rar (1.18 Мб, 7 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 12:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как отобразить ViewPager внутри другой активити (Программирование Android):

ViewPager внутри ListView, Как вставить? - Программирование Android
Здравствуйте. Есть задача, внутри ListView сделать айтемы, которые содержат ViewPager Вот фрагмент кода, в котором я пытаюсь просто...

Подвисает ViewPager с фрагментами внутри - Программирование Android
Собственно вот в чём соль. Есть ViewPager с фрагментами внутри, в каждом фрагменте есть изображение которое подгружается из ресурсов...

ViewPager.setCurrentItem() внутри LoaderCallbacks.onLoadFinished() - Программирование Android
Столкнулся с проблемой. В приложении главная активность - список ListView, при выборе элемента списка открывается новая активность с...

Как автоматизировать процесс тестирования связи одной активити с другой? - Программирование Android
Есть первая активити, которая стартует вторую startActivityForResult с requestCode. Соответственно в onActivityResult ловлю этот...

Как передать ссылку на элемент активити в другой класс чтобы провести операции надо ним - Программирование Android
Такая задача сложилась. есть активити MainActivity: public class MainActivity extends Main {...} в нем есть элемент LinearLayout -...

Как вызвать метод в активити классе из обычного не активити класса? - Программирование Android
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в отдельном классе "сокетсервер"(+в отдельном потоке)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 446
13.10.2013, 12:44  [ТС] #2
Если откоментить в моем проекте:

Java
1
2
//Intent intent = new Intent(this, ActivityTwo.class);
//startActivity(intent);
то будет сразу понятно, что должно отображаться в главной активности. Кто в курсе немного, помогите пожалуйста.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 12:44
Привет! Вот еще темы с ответами:

Активный фрагмент внутри активити - Программирование Android
Всем привет. Есть активити с content_frame, есть фрагмент. В Activity фрагмента gridView При старте фрагмента приложение вылетает с...

Ссылка на текущий лейаут внутри активити? - Программирование Android
Как начинающему android-программисту, мне часто приходится "заимствовать решения" в интернете, на stackoverflow, например... Пытаясь...

Закрытие одной активити из другой - Программирование Android
Собственно, вопрос понятен из темы. Он вытекает из наличия в задании обязательной кнопки выхода. Приложение из 2х активити, из одного...

Обращение к элементам другой Активити - Программирование Android
Есть xml-файл главной активити main.xml который содержит поле ввода <EditText android:id="@+id/edPhone" ...


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

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

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