Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
1

Как отобразить ViewPager внутри другой активити

13.10.2013, 12:28. Просмотров 950. Ответов 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 внутри ListView, Как вставить?
Здравствуйте. Есть задача, внутри ListView сделать айтемы, которые содержат...

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

Как автоматизировать процесс тестирования связи одной активити с другой?
Есть первая активити, которая стартует вторую startActivityForResult с...

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

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

1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
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

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

Активный фрагмент внутри активити
Всем привет. Есть активити с content_frame, есть фрагмент. В Activity...

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


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

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

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