Articles of android viewpager

Fragment里面的FragmentPagerAdapter

我在实现基于多个ViewPagers的devise时遇到了一些麻烦。 在高层次上,我有一个FrameLayout的FragmentActivity,因为它的内容。 我有3个不同的片段,我想要显示。 所有3个全屏幕,一次只能使用1个。 片段1是一些基本的片段与一些TextViews和ImageViews。 片段2有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段。 片段3有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段(与片段2不同) 在我的FragmentActivity onCreate()我得到的FragmentManager和开始一个事务,以取代我的FrameLayout中的一个新的片段2实例。 在这一点上,一切都按预期工作。 我的ViewPager在片段2完美地工作。 现在我有一个菜单选项,用Fragment 3的新实例replace我的FrameLayout中的Fragment 2。 当我尝试用另一个replace事务将Fragment 2放回到FrameLayout中时,问题就出现了。 我看到我的PagerIndicater在顶部,但我的网页是空白的。 我试着创build一个新的我的Fragment 2的实例,并调用一个replace事务。 当我调用replace和在replace之前添加findFragmentByTag检查而不是创build新实例时,我也尝试在我的碎片上设置一个标记。 在我第二次replace之后,两者都给了我相同的空白页的结果。 供参考我的第一个devise只是一个ViewPager和ViewIndicater的FragmentActivity。 我只有我的描述上面的片段2和片段3和一个菜单选项来切换它们。 要切换我有2个不同的FragmentPagerAdapters定义,只是称为ViewPager.setAdapter设置选定的FragmentPagerAdapter。 这是完美的工作,但现在我需要一个新的顶级片段,根本不使用ViewPager。 这就是为什么我决定把我的ViewPage移动到他们自己的片段中。 我的想法是,我只是交换我的片段到FrameLayout。 我现在没有我的代码在我面前,所以我不能发布任何,但我会明天添加一些代码到我的问题,以帮助促进答案。

在ViewPager中replace片段显示空白屏幕?

我有很多麻烦让碎片与标签/刷卡工作。 我有一个活动和两个片段,其中有一个ListView。 我想要的是当我从片段1滑动到与ListView的片段,刷新ListView或者如果可能的话重新创build第二个片段…. 我现在正在尝试使用FragmentTransaction.replace()像这样: public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) { // TODO Auto-generated method stub Fragment frag = new FragmentTwo(); FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); if (arg0.getPosition() == 1) { trans.replace(R.id.pager, frag); trans.addToBackStack(null); trans.commit(); } } 所以我认为,当我滑动到标签2,这是与ListView的一个,它会取而代之的是一个新的,它创build的。 实际发生的事情是,当我滑动到标签2,它重新创build与ListView的片段(我知道,因为我有一个对话框在屏幕上显示的onCreateView),但片段/选项卡是空白/黑色。 我究竟做错了什么? 这个创build的片段去哪了? 我不知道这些片段的代码是否相关,但请告诉我是否应该发布,我可以这样做。 这是我的PagerAdapter类。 public class TabsPagerAdapter extends FragmentPagerAdapter { public TabsPagerAdapter(FragmentManager fm) { super(fm); } @Override […]

我如何禁用ViewGroup的所有孩子的所有触摸事件?

我有一个FrameLayout容器包含很多东西(包括ScrollView , WebView , ViewPager等)。 我想能够触发此容器上的onClick事件,但似乎有一些ScrollView , WebView和ViewPager拦截触摸事件,因为onClick事件只有当我点击容器的部分不触发有任何他们… 如何禁用容器的所有触摸事件,以便触发onClick中的任何位置? UPDATE 这个想法是有像Android 3.2中的任务pipe理器,即应用程序的当前可见屏幕显示为一个缩小的图标,可以点击。 谢谢

Android视差效果和视图传呼机

我试图在我的应用程序中实现视差效果。 我有一个FragmentActivity实现了OnPageChangeListener接口,并侦听我的ViewPager滚动事件。 为了在我的XML中达到这个效果,我在背景的所有其他视图背后都有一个LinearLayout ,并将其移动到onPageScrolledcallback中。 如果我只是轻扫一切OK,效果起作用,背景位置改变。 但是当我的手指离开屏幕时,背景被重新绘制在原来的位置(即使我在新的页面中)。 我不明白为什么会发生这种情况。 这里是我的FragmentActivity的代码: public class MainActivity extends FragmentActivity implements OnPageChangeListener { // DEFINE THE PAGEADAPTER private ViewPager viewPager; private com.angtrim.ecomilano.PagerAdapter pagerAdapter; private int oldPosition = 0; private int offSet = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // CREATE VIEWPAGER viewPager = (ViewPager) findViewById(R.id.viewpager); pagerAdapter = new PagerAdapter(getApplicationContext(),getSupportFragmentManager()); […]

尝试在空对象引用上调用虚拟方法'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)'

我试图使用android材质devise来实现滑动标签布局。 但它给了我NullPointerException 。 这是我的代码到目前为止: MainActivity.java public class MainActivity extends ActionBarActivity { private Toolbar toolbar; private ViewPager pager; private SlidingTabLayout nLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_appbar); toolbar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer_fragment); drawerFragment.setUp(R.id.navigation_drawer_fragment, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar); pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); nLayout = (SlidingTabLayout) findViewById(R.id.tabs); nLayout.setViewPager(pager); } […]

如何获得FragmentPagerAdapter的当前位置?

我有一个适配器扩展FragmentPagerAdapter并利用ICS风格的actionBar。 该操作栏具有从当前select的页面获取input的操作。 具体来说,我在操作栏中有一个截图图标,它显示当前页面的URL并显示来自该URL的任何截图。 但是,我不知道如何检索当前select的页面。 我怎样才能实现像 public int getActivePage() { return position; 我仍然在研究viewpager的实现,所以我的代码依然严重依赖于例子,所以忽略了这个混乱:P 问题领域如下所示。 public class ListFragmentViewPagerActivity extends FragmentActivity { ArrayList<String> URLS; ArrayList<String> TITLES; BroadcastReceiver receiver; String threadTitle = null; public static String threadUrl = null; String type = null; String threadAuthor = null; String ident = null; boolean isFav = false; String author = null; […]

Viewpager上的VideoView,切换页面时停止video

我有一个viewpager与不同的片段,其中一个有一个videoview在其中。 如果我在播放video的时候切换页面,那么即使我在不​​同的页面上,它也会重新播放。 我试着像这样实现ViewPager的OnPageChangeListener: viewpager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { if(position!=mAdapter.getCount()-1){ MultimediaFragment frag = (MultimediaFragment)mAdapter.getItem(position+1); frag.onPageIsChanged(); } if(position != 0){ MultimediaFragment frag = (MultimediaFragment)mAdapter.getItem(position-1); frag.onPageIsChanged(); } } 与onPageIsChanged()是我自己的方法,试图告诉我的videoview属性停止和隐藏控制: public void onPageIsChanged() { if(mVideoView!=null){ if(mVideoView.isPlaying()){ mVideoView.stopPlayback(); } mMedia.hide(); } } 问题是mVideoView总是空的,即使它在后台播放。 这个video是在片段的OnCreateView方法上创build的,但是不应该保持设置为我的mVideoView字段,直到片段被销毁?

如何在android滑动选项卡布局中alignment活动选项卡中心

我有Android项目中的12个项目布局+查看传呼机。 从左向右滑动时,选定的标签应该与Play商店相同。 请帮我怎么做。 在我的应用程序中,活动标签总是在屏幕左侧。

带有RecyclerView的Android ViewPager在BottomSheet中不正确地工作

当我尝试滚动列表,有时这工作不正确 – BottomSheet截获滚动事件和隐藏。 如何重现这一点: 打开底部表单 更改ViewPager的页面 尝试滚动列表 结果:BottomSheet将被隐藏。 这里是示例代码: 编译'com.android.support:design:23.4.0' MainActivity.java package com.nkdroid.bottomsheetsample; import android.os.Bundle; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.TabLayout; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private BottomSheetBehavior behavior; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); […]

如何使用视图寻呼机来处理返回button?

我有使用视图寻呼机呈现的两个碎片碎片A和碎片B. 如果用户已经从A刷到B然后按下返回button(当在B)时,那么用户应该去A而不是从视图寻呼机出来。 我们怎样才能做到这一点? 将交易添加到堆栈似乎没有帮助。 谢谢