Articles of android viewpager

为什么当我通过我的应用程序viewPager进行翻页时,我的片段onCreate被广泛地调用?

我不太了解这个片段生命周期业务。 我有一个相当标准的3页水平滑块视图的Pager布局我的应用程序的“查看详细信息”部分。 我开始我的应用程序的三个中间页面。 我的FragmentActivity将页面设置为第1页。 mPager.setCurrentItem(1); //default to center page, current data view fragment 我一直在使用FragmentStatePagerAdapter,因为使用FragmentPagerAdapter时有时会崩溃我的应用程序,例如从暂停状态返回时,这是现在解决此问题的最快方法。 似乎工作,但我怀疑国家方面可能是我的问题的原因可能在这里。 所以起初我以为我会让每个片段做一个从rest服务获取数据然后在列表中显示的工作,但我不太确定。 我试着运行一个独特的asynchronous任务来获取每个片段onCreateView事件中的数据。 然后,在阅读了关于片段生命周期的更多信息之后,我切换到了onCreate,注意到onCreateView被调用得相当厉害,反过来又使贪婪的应用程序太频繁地请求数据。 切换到onCreate并没有改变任何东西。 OnCreate仍然被称为与2个相邻片段的onCreateView一样多。 奇怪的是,我设置的片段是第一个在Fragment Activity中显示的片段,只有一次调用onCreate。 有什么感觉不对。 现在我想我应该有父片段活动声明,并调用所有的asynchronous任务来获取我需要显示在片段中的数据。 将asynchronous调用的结果设置为父级片段活动拥有的对象,然后让片断使用父级包含的对象来创build列表视图等。 但是,如果由父活动启动的asynchronous任务在每个片段onCreateView被调用之前没有完成,并且父对象包含的对象尚未准备好, 签署,困惑和沮丧

向ViewPager添加标题

我已经设置了可滑动标签的ViewPager,现在我想在页面顶部添加标题来指示正在显示的片段。 这是迄今为止的代码: activity_main.xml中 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+android:id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> MainActivity.java public class MainActivity extends FragmentActivity { private PagerAdapter mPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); this.initialisePaging(); } private void initialisePaging() { List<Fragment> fragments = new Vector<Fragment>(); // Add fragments here fragments.add(Fragment.instantiate(this, PickerFragment.class.getName())); fragments.add(Fragment.instantiate(this, DisplayFragment.class.getName())); […]

viewpager选项卡中的我的片段不刷新

我有Viewpager与4个选项卡..在每个选项卡中有一个片段。 我的第一个选项卡是一个表单(例如用户),我点击保存后,数据插入到数据库中的片段。 我的第二个选项卡是另一个forms的片段,但它使用来自第一个选项卡(我从数据库中获取)的数据填充微调。 现在,我成功地从我的第一个标签插入数据后,在我的第二个标签中,微调框是空的。 因为我的数据库查询是在第二个片段中的onCreateView()中实现的,所以在应用程序启动时它只调用一次,所以在tab 1之间切换tab2不会启动onCreateView()甚至onResume()。 对我来说有趣的是,如果我去tab4,然后返回到tab2,我的数据是在我的微调正确,所以不知何故从我当前的标签刷新我的片段远离两个选项卡。 我的问题是我怎么才能实现适当的刷新我的片段时只调用一次onCreateView()? 编辑我试图把这种方法psykhibuild议像这样: this.mViewPager.setOffscreenPageLimit(0); this.mViewPager.setAdapter(this.mPagerAdapter); this.mViewPager.setOnPageChangeListener(this); 但它不适合我 我错过了什么?

MapView(android maps api v2)里面的片段布局不显示

我使用viewpager在2个操作栏选项卡(用于这种导航使用eclipse向导)之间滑动。 我正在使用android maps v2 api。 我想在我的一个标签(我猜mapfragment是不可能的)内的mapview,button和textview。 我膨胀我的片段的XML从这样的布局: public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.first_tab_fragment, container, false); } } 我的first_tab_fragment.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.google.android.gms.maps.MapView android:id="@+id/mapview" android:layout_width="100dip" android:layout_height="100dip" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView1" android:layout_marginRight="15dp" > </com.google.android.gms.maps.MapView> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView1" android:layout_centerHorizontal="true" android:text="Button" /> […]

在android viewpager幻灯片?

我有android viewpager幻灯片的问题。 我想在最短的时间之后显示viewpager布局。 这是我的代码示例。 我的主要课程: public class MainActivity extends Activity { private ViewPager mViewPager; private SwipeAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager) findViewById(R.id.pager); // set the adapter adapter = new SwipeAdapter(MainActivity.this); mViewPager.setAdapter(adapter); mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { } @Override public void onPageScrolled(int arg0, float arg1, […]

错误膨胀类android.support.v4.view.ViewPager

我一直在试图为我的应用程序创build一个传呼机在<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" />我写了我的代码根据这个博客文章 。 寻呼机活动的XML: <?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.support.v4.view.ViewPager android:id="@+id/instructionsViewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> 适配器代码: public class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { // TODO Auto-generated method stub return 2; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return (arg0 == ((View) arg1)); } […]

ViewPager数据从下一个屏幕返回时丢失

我在我的应用程序中使用ViewPager,我有三个选项卡; 我在片段中使用ViewPager。 现在我的问题是,我正在加载应用程序正确的数据,但是当我去下一页,然后回到ViewPager,数据丢失,标签不工作。 请帮助我 以下是我的代码: import com.devpoint.rprtjobs.R; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTabHost; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.support.design.widget.TabLayout; public class MainActivity extends Fragment { // Declaring Your View and Variables Toolbar toolbar; ViewPager pager; SwipeViewPagerAdapter adapter; SlidingTabLayout tabs; CharSequence Titles[]={"OnGoing","UpComing","Expired"}; […]

页面curl与查看传呼机

我必须使用Viewpager实现页面curl ,这样当用户滑动添加到视图分页器的布局时,会产生页面curl效果。 我已经下载github.com/harism/android_page_curl,但它似乎只适用于图像作为大多数其他实现..任何人都可以请告诉我一个解决方法,以便我可以执行页面curl与我有添加到查看传呼机? 谢谢。

如何只让特定片段在CoordinatorLayout的ViewPager中滚动?

背景 我有一个viewPager,有3个片段和标签。 每个片段都有一个介绍阶段(自己的),没有任何可滚动的内容。 离开介绍阶段后,有一个recyclerView,用户可以滚动。 问题 我需要使用新的devise库,所以当滚动(只通过recyclerView),它会隐藏actionBar,让标签仍然显示。 当用户转到没有可滚动内容的片段时,actionBar应该重新出现,类似于“Google Play报亭”的内容。 事实上,我甚至很乐意拥有它们:只要你开始向左/向右滑动,重新显示操作栏。 事情是,如果我按照指导方针和样本,我有两个问题: 碎片的不可滚动阶段在底部被截断,就好像它可以滚动一样。 我无法find如何重新显示actionBar,并使其卡在那里,直到我切换到一个可滚动的内容(通过切换到另一个片段,或当当前片段的内容更改为一个可滚动的内容)。 我试过了 以下是活动的当前布局XML文件的简短片段: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:id="@+id/activity_main__coordinator" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/activity_main__appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:theme="?attr/actionBarTheme"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:layoutDirection="ltr" android:theme="?attr/actionBarTheme" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" tools:ignore="UnusedAttribute"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:tabGravity="fill" app:tabIndicatorColor="#FFffffff" app:tabIndicatorHeight="3dp"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <include layout="@layout/fabs"/> </android.support.design.widget.CoordinatorLayout> […]

dynamic更新TabLayout而不更改选定的选项卡

我想用Material Design Support库实现一个向导。 我正在使用ViewPager和Tablayout但我有问题dynamic添加新标签。 首先,我在onCreate方法中设置我的小部件: viewPager = (ViewPager) findViewById(R.id.tab_viewpager); tabLayout = (TabLayout) findViewById(R.id.tab_layout); adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFrag(new DummyFragment(), "1"); adapter.addFrag(new DummyFragment(), "2"); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); 然后我想添加另一张牌,当点击列表中的一个元素时: adapter.addFrag(new DummyFragment(), "3"); adapter.notifyDataSetChanged(); tabLayout.setTabsFromPagerAdapter(adapter); 问题是:添加之后,选定的卡被重置为第一个。 如何防止这种行为?