Articles of android viewpager

以编程方式删除ViewPager,何时(或我如何确保)包含的碎片被销毁?

事先搜索过这个问题后,我可以find很多关于从ViewPager动态添加和删除所选Fragment的ViewPager 。 然而,我真正关心的是,当ViewPager被用于通过FragmentPagerAdapter显示Fragment时,我可以以编程方式从其包含的ViewGroup “干净地”删除整个ViewPager ,并确保正确销毁包含的Fragment 。 为了进一步扩展这个问题,我有一个横向双窗格布局,其中从左侧的Fragment的列表进行选择,然后选择的内容放在FrameLayout的右侧。 关键是内容可能会或可能不会被分页。 因此,内容必须以ViewPager格式显示,或者如果没有分页,则它应直接由单个Fragment表示。 为了显示单个Fragment ,我只是像往常一样执行FragmentTransaction ,以便将Fragment放入FrameLayout容器中。 另一方面,如果要显示的是分页内容,那么我创建一个ViewPager并将其添加为FrameLayout的子级。 当我需要更改内容时,如果以前的内容是一个独立的Fragment那么我可以通过FragmentTransaction .remove()删除它。 当我这样做时, Fragment按预期进入onPause() … onDestroy()循环。 如果以前的内容是ViewPager那么我使用.removeAllViews()从FrameLayout删除它。 在这里我遇到了问题:我没有看到任何onPause() … onDestroy()方法在通过FragmentPagerAdapter在ViewPager中保存的任何Fragment被调用。 从用户的角度来看,应用程序运行正常。 在几轮ViewPager被删除后,我可以看到GC回收内存。 但是,我不喜欢这样一个事实,那些Fragment的生命终结方法没有被调用,因为我不能在其中进行任何清理,而且它似乎并不“正确”。 当ViewPager与其父级分离时,是否有一种方法可以挂钩以删除ViewPager的Fragment ? 换句话说,当我知道不再使用ViewGroup ,我会在某处(可能在FragmentPagerAdapter )执行FragmentTransaction来删除那些Fragment 。 或者,我意识到我可以永久地将ViewPager保持在右侧,并在其中动态交换Fragment 。 当然,在某些时候它只能容纳一页并不重要。 如果这是一个更好的方式,那么我将重构我的代码来做到这一点,但我会很感激的意见。

如何使用选项卡设置多个滑动视图的默认选项卡?

我真的被卡住了。 我在我的主要活动中使用选项卡进行了四次滑动视图,但我想要的是当用户打开应用程序时,它会自动显示第二个选项卡而不是第一个选项卡。 这是我的MainActivity.java public class MainActivity extends FragmentActivity implements ActionBar.TabListener { private ViewPager viewPager; private TabsPagerAdapter mAdapter; private ActionBar actionBar; // Tab titles private String[] tabs = { “First Tab”, “Second Tab”, “Third Tab”, “Fourth Tab” }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initilization viewPager = (ViewPager) findViewById(R.id.pager); actionBar = getActionBar(); mAdapter […]

在viewpager中显示Youtubevideo

我想在ViewPager设置YouTubevideo。 为此,我在适配器中设置了FrameLayout ,并在其中设置了YoutubeVideoFragment,如下所示: 我的ViewPager适配器: import android.app.Activity; import android.app.FragmentTransaction; import android.content.Context; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.util.List; import np.com.test.R; import np.com.test.fragment.YoutubeVideoFragment; /** * Created by Vikash on 8/18/2015. */ public class TutorialVideoAdapter extends PagerAdapter { private List mList; private Activity mActivity; public TutorialVideoAdapter(Activity activity, List list) { mActivity = activity; […]

实例化PagerAdapter Android

2Hi伙计们我正在尝试使用横向分页器和Android支持包构建应用程序。 我已经在另一个项目中编译了这个确切的代码,但第二个代码示例的最后一行是不允许我编译的。 Eclipse说Cannot instantiate the type PagerAdapter 我的import import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; 我的代码 List fragments = new Vector(); fragments.add(Fragment.instantiate(this, Tab1.class.getName())); fragments.add(Fragment.instantiate(this, Tab2.class.getName())); fragments.add(Fragment.instantiate(this, Tab3.class.getName())); this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); 您认为我的导入或项目设置有问题 – 如果您需要更多信息,请告诉我。 此代码适用于其他项目。 谢谢

为什么我在android-pageradapter中遇到stackoverflow错误?

我只是想膨胀一个xml文件并在viewpager页面中显示它。 LLL logcat的: 致命exception:在Android.wits.CompoundButton的android.graphics.drawable.DrawableContainer.jumpToCurrentState(DrawableContainer.java:179)上的android.graphics.drawable.BitmapDrawable.setAlpha(BitmapDrawable.java:406)中的主要java.lang.StackOverflowError。 android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)在android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.View.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的jumpDrawablesToCurrentState(CompoundButton.java:319) :5158)在android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)at android位于android.view的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.View.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)。 位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup) .java:5158)在android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)处于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)在Android.view上的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.View.View.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)。位于android.view.View.View.jumpDrawablesTo的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158) 位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.View.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的CurrentState(ViewGroup.java:5158)(ViewGroup.java:5158)ViewGroup.java :5158)在android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)at android位于android.view.ViewGroup的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)上的.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)。 android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.ja)上的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)中的jumpDrawablesToCurrentState(ViewGroup.java:5158) va:5158)在Android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158) Android.view.View的View.view.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.View上的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.View.jumpDrawablesToCurrentState(ViewGroup.java:5158)的.jumpDrawablesToCurrentState(ViewGroup.java:5158)位于android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup。 java:5158)在android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)的android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158)android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5158) android.view。 ViewGr pageradapter类: public class pageradapter extends PagerAdapter { Context mContext; LayoutInflater mLayoutInflater; List l = MainActivity.list; ImageLoader mImageLoader; public pageradapter(Context context) { mContext = context; mLayoutInflater = LayoutInflater.from(mContext.getApplicationContext()); } @Override public int getCount() { return 4; } @Override […]

如何删除带有actionbar,viewpager和多个片段的选项卡?

我正在使用我在这里find的代码。 public class ActionBarTabs extends SherlockFragmentActivity { CustomViewPager mViewPager; TabsAdapter mTabsAdapter; TextView tabCenter; TextView tabText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); mViewPager = new CustomViewPager(this); mViewPager.setId(R.id.pager); setContentView(mViewPager); ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); mTabsAdapter = new TabsAdapter(this, mViewPager); mTabsAdapter.addTab(bar.newTab().setText(“Home”), ToolKitFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText(“FujiSan”), FujiFragment.class, null); } public static class TabsAdapter extends FragmentPagerAdapter […]

使用ViewPager和PageTransformer与Android API <11的问题

我需要在应用程序上使用android:minSdkVersion=”9″为ViewPager编写自定义转换。 我正在尝试运行ZoomOutPageTransformer给出的ZoomOutPageTransformer 。 我没有编译错误,并且在运行Android 2.3.3(API 10)的三星Galaxy S上,该行 pager.setPageTransformer(true, new ZoomOutPageTransformer()); 不会给出任何错误,但ZoomOutPageTransformer的transformPage的代码永远不会执行。 如果我设置android:minSdkVersion=”11″并使用我的Nexus 4(API 17),代码将完美运行。 这些PageTransformers可以与API 9和10一起使用吗? 否则,如何为ViewPager创建自定义过渡? 编辑 这是我使用的代码: public class HomeFragment extends Fragment{ ViewPager mNewsTitlePager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.home_content, container, false); } @Override public void onActivityCreated (Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); mNewsTitlePager = (ViewPager) getView().findViewById(R.id.news_title_pager); mNewsTitlePager.setPageTransformer(true, new ZoomOutPageTransformer()); […]

错误:构造函数MainActivity.ScreenSlidePagerAdapter(FragmentManager)未定义

我试图在http://developer.android.com/training/animation/screen-slide.html中实现一个android项目,我在一个类中有错误 import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.Intent; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.app.NavUtils; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class MainActivity extends FragmentActivity { private static final int NUM_PAGES = 5; private ViewPager mPager; private PagerAdapter mPagerAdapter; @Override […]

Android Viewpager反弹到半页

所以我想要实现的是用户将打开视图寻呼机的第一页,并且视图寻呼机将反弹到第二页的一半并反弹回第一页,指示有更多页面要滚动到。 我想知道如何实现这个?

使用自定义Loader时,未在ViewPager片段上调用onResume()

简洁版本: 我有一个片段,维护一个ViewPager来显示另外两个片段,我们称之为FragmentOne和FragmentTwo 。 启动应用程序时, FragmentOne可见, FragmentTwo处于屏幕外,只有在向左滑动视图时才可见。 通常,只要应用程序启动,就会立即为两个片段调用onStart()和onResume() 。 我遇到的问题是当FragmentOne启动一个自定义Loader然后在FragmentTwo调用onResume()直到它完全可见。 问题: 这是我的代码问题还是Android支持库中的错误? (该库的修订版12没有出现问题,它从修订版13开始。) 如果它是修订版13和18中的错误,是否有解决方法? 我的自定义Loader吗? 长版: 我已经构建了一个演示该问题的示例应用程序。 我试图将代码减少到最低限度,但它仍然很多,所以请耐心等待。 我有一个MainActivity ,可以加载一个创建ViewPager 。 对于我的应用程序来说,ViewPager由Fragment而不是Activity维护是很重要的。 MainFragment创建一个FragmentPagerAdapter ,然后创建片段FragmentOne和FragmentTwo 。 让我们从有趣的位开始,两个片段: FragmentOne是一个ListFragment ,它使用自定义Loader加载内容: public class FragmentOne extends ListFragment implements LoaderCallbacks<List> { private ArrayAdapter adapter; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1); setListAdapter(adapter); setEmptyText(“Empty”); } @Override public […]