Articles of android viewpager

替换的ViewPager和BackStack的生命周期?

我真的搞砸了Android ViewPager的生命周期,我开始认为我的应用程序结构有问题。 如果我能做以下事情,我想要确认: 我有一个应用程序显示一些选项卡。 其中一个选项卡显示的是ViewPager,其中有两个ListFragments。 这些ListFragments是在ViewPager的onCreate事件中创建的。 当您单击其中一个ListFragments中的项目时,它将用不同的片段(另一个是ListFrament)替换整个ViewPagerFragment。 这是我用来用新的ListFragment替换ViewPager的代码 FragmentManager fm = getFragmentManager(); android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.container, new RequestForm(requestsList.get(itemIndex))); ft.addToBackStack(null); ft.commit(); 从那里,一切都很好。 但是,如果用户单击后退按钮,则会出现以下情况: ViewPager正在重新加载(来自onCreateView),但里面的ListFragment不会显示。 看起来我的ListFragment的对象仍然存在,但似乎他们丢失了他们的视图,并且没有调用onCreateView来重新创建它(因为在ViewPager出局时对象没有睡觉)。 我现在不在这里发布更多代码,因为我的目的是知道我想要做的是不是以Android的思维方式做好。 我是否必须与Android SDK进行对抗以存档我想要做的事情?

ViewPager片段都引用相同的RecyclerView和/或Adapter

我有一个包含RecyclerView的Fragment来显示给定日期的事件。 我使用ViewPager将片段分成多天; 周六活动的片段和周日活动的片段。 但是,看起来两个片段都引用相同的RecyclerView和/或Adapter,因为它只是显示其事件的最后一个选项卡(在本例中为Sunday)。 在我的具体案例中,星期六有两个事件,周日没有事件。 两个片段都有空的RecyclerViews。 为了证实我的理论它是由最后一个标签引起的,我改变了日期。 这导致RecyclerViews有两个事件(周六的事件)。 以下是各个片段的相关代码: public class EventListFragment extends Fragment{ private EventAdapter mEventAdapter; private static final String DATE_ARG = “eventDate”; public static EventListFragment newInstance(LocalDate date){ EventListFragment eventListFragment = new EventListFragment(); Bundle args = new Bundle(); args.putSerializable(DATE_ARG, date); eventListFragment.setArguments(args); return eventListFragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) […]

ActionBarSherlock + ViewPager缓存更多只是上一个/下一个视图

在页面上: onCreate每次选择一个选项卡时都会调用两个选项卡 有人解释了ABS(实际上是ViewPager)是如何工作的,以便ViewPager能够进行滚动。 很明显,至少需要在同一时间创建上一页/下一页。 是否有可能以某种方式“缓存”不仅仅是上一个/下一个视图(片段): 我在第1页,在那里我有一个网络调用来获取一些数据(在Activity中执行此操作,而不是在Fragment中 – 顺便说一下。这样可以吗?) 切换到第2页,然后 切换到第3页,然后 切换到第1页=这里我的页面被重新创建(虽然使用了一些缓存,但是,如果可能的话,我不需要任何娱乐) 因此,缓存所有页面会很好。 如何实现这一点如果可能在当前版本(4)中,或者这将是一些新function? 或者甚至更好的问题,如何推迟/禁用破坏视图?

ListView行中的ViewPager可防止触发onItemClick

我在ListView的每一行中都有一个ViewPager。 它工作正常,当用户使用滑动手势时,它会更改其中的视图,但它会阻止调用ListView的onItemClick方法。 我知道ViewPager是罪魁祸首,因为当我隐藏它时,会调用onItemClick,所以这就是我想要的: 我创建了一个ViewGroup作为行(RowView)。 此ViewGroup具有onInterceptTouchEvent覆盖,以避免ViewPager在检测到单击时处理更多触摸事件。 但仍未调用onItemClick回调。 并且列表选择器不会在单击时显示。 我想要这两个function。 这是RowView的onInterceptTouchEvent的样子: @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int actionMasked = ev.getActionMasked(); switch(actionMasked) { case MotionEvent.ACTION_DOWN: Log.d(“RowView”, “OnInterceptTouchEvent – Down”); tapDetector.onTouchEvent(ev); return false; case MotionEvent.ACTION_CANCEL: Log.d(“RowView”, “OnInterceptTouchEvent – Cancel”); tapDetector.onTouchEvent(ev); break; case MotionEvent.ACTION_UP: if(tapDetector.onTouchEvent(ev)) { Log.d(“RowView”, “OnInterceptTouchEvent – UP!”); return true; } break; } return super.onInterceptTouchEvent(ev); } 有什么建议可以解决吗? […]

viewpager完成后调用actvity

我正在开发一个应用程序,我必须使用viewpager,在viewpager中的所有项目完成后,我必须调用一个活动。 我无法为此获得事件监听器。 以下是我一直在推荐的内容: https : //github.com/chiuki/android–swipe-image-viewer/blob/master/src/com/sqisland/android/swipe_image_viewer/MainActivity.java 这是我到目前为止所做的: public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); ImagePagerAdapter adapter = new ImagePagerAdapter(); viewPager.setAdapter(adapter); OnPageChangeListener mListener = new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, […]

更改viewPager滑动方向

我正在使用TabLayout和viewPager,可以选择向左或向右滑动viewPager,以便在页面之间导航。 我的问题是,我的应用程序是基于RTL(从右到左),滑动方向是相反的。 我正在尝试将滑动方向从默认更改为反转版本。 我一直在网上搜索很多,但找不到怎样的方法。 我正在使用android.support.v4.view.ViewPager; 这就是我用viewPager初始化我的TabLayout的方法: // View Page Adapter final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); final PagerAdapter adapter = new PagerAdapter (getSupportFragmentManager(), tabLayout.getTabCount()); //View Page Adapter Configuration viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); viewPager.setOffscreenPageLimit(3); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } 简介:目前,当我向左滑动viewPager时,它会显示下一页。 在RTL中,当您向右滑动viewPager时,它会显示下一页。 可能很难理解,但在这里。 向右滑动即可显示下一页 我需要向右滑动以显示上一页 。

在ViewPager中滑动半页(来自兼容包)

我正在使用带有ViewPager的PageAdapter (来自兼容包v4)在水平列表框中滑动。 问题是我从第一页开始的第二个框是第二页中的第一个框 (在视觉上和概念上)。 像这样的东西: 我正在做的方式现在有效。 然而,这变得有点奇怪,因为在滑动的中间存在两个相同的框出现的情况(如图中所示)。 有一种方法只能刷“半”页面? 编辑: 这些盒子是抽象的。 实际上每个框都是一个ListView ,我创建不同的页面只是改变每个ListView的适配器。

如何在Android中的视图寻呼机中启用点击侦听器?

我正在使用视图寻呼机在Android中的视图之间滑动。 现在我需要捕获每个视图的点击事件。 当我覆盖触摸侦听器以捕获点击事件时,滑动操作不会发生,并且屏幕保留在第一页本身。 如何添加触摸侦听器以查看寻呼机? 码: viewPager.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { mDetector.onTouchEvent(event); return true; }}); 对于上面的代码,我能够捕获点击事件,但是滑动动作变为不可能。

如何创建RTL ViewPager?

我在我的应用程序中使用ViewPager,我想支持RTL,但是当我将我的设备语言改为RTl时,它似乎无法正常工作。 我希望标签从右侧开始(右侧的第一个片段)。 请帮我解决一下。 编辑 :这是它的图片: 标签从左侧开始 这是我的代码: activity_main.xml中: MainActivity.java: package …; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.InterstitialAd; import java.util.ArrayList; import java.util.List; […]

setOnPageChangeListener不调用onPageSelected

我使用以下示例设置了一个simpleonpagechangelistener: Android SimpleOnPageChangeListener – 确定滑动方向 但是,当我执行代码然后滑动viewpager时,我希望调用以下行: public void onPageSelected(int position) { 但是它似乎永远不会这样做 – 这导致了一个无function的viewPager。 有什么建议么? public class Home extends YouTubeBaseActivity implements VideoClickListener { … private int mCurrentTabPosition = NO_CURRENT_POSITION; private static final int NO_CURRENT_POSITION = -1; private ViewPager mPager; … int imageArray[]; String[] stringArray; private OnPageChangeListener mPageChangeListener; ImagePagerAdapter adapter = new ImagePagerAdapter(); @Override public void […]