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

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

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

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

13.10.2013, 12:28. Просмотров 803. Ответов 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;
  }
}
Вложения
Тип файла: rar test_Fragment.rar (1.18 Мб, 7 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 12:28     Как отобразить ViewPager внутри другой активити
Посмотрите здесь:

Android Закрытие одной активити из другой
Обращение к элементам другой Активити Android
Переход на другой активити (список) Android
Android ViewPager внутри ListView, Как вставить?
Android Как передать ссылку на элемент активити в другой класс чтобы провести операции надо ним
Активный фрагмент внутри активити Android
Android Подвисает ViewPager с фрагментами внутри
ViewPager.setCurrentItem() внутри LoaderCallbacks.onLoadFinished() Android
Сохранение данные при переходе на другой активити Android
Android Ссылка на текущий лейаут внутри активити?
Android Изменить элемент одной активити из другой
Android Повторное создание фрагмента внутри фрагмента ViewPager

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
13.10.2013, 12:44  [ТС]     Как отобразить ViewPager внутри другой активити #2
Если откоментить в моем проекте:

Java
1
2
//Intent intent = new Intent(this, ActivityTwo.class);
//startActivity(intent);
то будет сразу понятно, что должно отображаться в главной активности. Кто в курсе немного, помогите пожалуйста.
Yandex
Объявления
13.10.2013, 12:44     Как отобразить ViewPager внутри другой активити
Ответ Создать тему
Опции темы

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