Articles of fragmentpageradapter

从FragmentPagerAdapter动态添加和删除片段

我有一个用于viewPager的FragmentPagerAdapter,它最初只有一个Fragment。 我想在用户从右向左滑动时动态地向适配器添加新的Fragment,并在用户从左向右滑动时动态删除Fragment。我试图使用此库https://github.com/commonsguy/cwac -pager但在该库中我们可以选择在按钮点击时添加和删除片段。 我试图将一个OnPageChangeListener添加到viewpager,但回调方法(onPageScrolled和onPageScrollStateChanged)被多次调用,这导致向FragmentPagerAdapter添加多个片段。 所以请详细说明如何做到这一点。

从Activity调用Tabbed Fragment方法

我有一个由三个片段组成的活动。 片段使用PagerAdapter使用操作栏选项卡。 我想要做的是从主活动中访问活动选项卡式片段中的方法。 我已经尝试了下面的代码,但这只是将片段返回为null,所以我猜它无法在标签中find它! NPListFragment articleFrag = (NPListFragment) getSupportFragmentManager().findFragmentByTag(“NP”); articleFrag.refreshT(); PagerAdapter: public class AppSectionsPagerAdapter extends FragmentPagerAdapter { public AppSectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch (i) { case 0: return new NPListFragment(); case 1: return new PListFragment(); case 2: return new FavouritesFragment(); } return null; } @Override public int getCount() […]

使用FragmentPagerAdapter向左侧添加选项卡

这将是我对标签的最后一个问题,我保证:)(也许)所以从以前的问题和尝试和错误我有FragmentPagerAdapter调用PagerAdapter创建一些选项卡,并使我能够动态创建新选项卡。 问题是新选项卡将始终插入到现有选项卡的右侧: (图片: 我尝试了以下方法: 添加一个静态条目“null”,在创建初始选项卡集时将跳过该条目。 然后在创建“Temp Tab”时,我可以将该条目覆盖到我想要的任何片段。 给了我一些奇怪的IllegalSTateException … 我认为这将是最好的,实际上真的很想工作:而不是添加片段: private final List mFragments = new ArrayList(); public void addFragment(Fragment fragment) { mFragments.add(fragment); notifyDataSetChanged(); } 使用 mFragments.add(0, fragment); 但是它给出了一条带有消息的IllegalStateException: Can’t change tag of fragment ChatFragment 当我尝试添加临时片段时。 现在,有两个问题: 有没有办法绕过该片段选项卡,我可以暂时取走所有片段标签并重建它们全部或其他东西吗? 要么 有没有更好,更优雅的方式来做到这一点? 或者我应该重新设计我的用户界面,以便选项卡可以正确使用? :P 编辑:这里有一些代码:(我从不想向人们发布死亡之墙,因为它可能吓跑他们:o) FragmentPagerAdapter: public class PagerAdapter extends FragmentPagerAdapter { private Context mContext; public PagerAdapter(FragmentManager […]

在viewpager中具有不同内容的相同片段

嘿伙计们我遇到了严重的问题。 我有一个父片段,其中有viewpager和tablayout。 Viewpager保存具有与之关联的不同内容的片段。 每次思考都可以在滑动时正常工作,但每当我点击tablayout的不同选项卡时,SwipableFragment的categoryId和categoryName都会更改为相邻选项卡的SwipableFragmet到可见片段。 基本上当我启动FragmentAllNews(包含ViewPager)时,它会显示第二个片段/页面而不是第一个片段/页面,当我向第二个片段移动时,我会看到第三个…换句话说,它总是显示下一个或前一个片段/页面取决于滑动方向(左或右)。 对不起,我的英语不好 :( 这是我的Fragments和FragmentStatePagerAdater类 1 FragmentAllNews,它包含viewpager和tablayout public class FragmentAllNews extends Fragment { @Bind(R.id.tab_layout) TabLayout tabLayout; @Bind(R.id.all_news_viewpager) ViewPager viewPager; SessionManager sessionManager; String categoryId; String categoryName; ArrayList tabs; public static FragmentAllNews createNewInstance() { FragmentAllNews fragmentAllNews = new FragmentAllNews(); return fragmentAllNews; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); sessionManager = new SessionManager(getActivity()); […]

使用FragmentPagerAdapter在Android ViewPager中滑动不工作

我想为此创建一个滑动应用程序,我在Android中使用ViewPager 。 当我运行下面的代码时,它会成功运行并打开一个蓝色的Fragment ,但是滑动不起作用。 你能告诉我为什么吗? 这是我的Activity : package app.learn.com.learnapp; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.os.Bundle; import java.util.List; import java.util.Vector; import menulistFrag.blueColor; import menulistFrag.greenColor; import menulistFrag.redColor; public class MenuActivityList1 extends FragmentActivity { ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_activity_list1); viewPager = (ViewPager)findViewById(R.id.pager); instantiateFrags(); } public void instantiateFrags(){ List frags = new […]

动态更改android.support.v4.view.PagerTitleStrip的标题

我在我的应用程序中使用PagerTitleStrip是最新的(Doc: http : //developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html ) 一切正常,我设置了这样的标题: public class PageAdapter extends FragmentPagerAdapter { private List fragments; public PageAdapter(FragmentManager fm, List fragments) { super(fm); this.fragments = fragments; } @Override public Fragment getItem(int position) { return this.fragments.get(position); } @Override public int getCount() { return this.fragments.size(); } String[] titles = { “1”, “2”, “3”, “4”,”5″ }; @Override public CharSequence […]

ViewPager中的片段返回空对象onResume

我使用FragmentPagerAdapter从片段切换。 我需要在制作片段开关时调用一些函数,并且在OnPause和OnResume上遇到一些麻烦,所以这个问题的建议我实现了一个接口OnPageSelectListener: public interface OnPageSelectListener { void onPageSelected(); void onPageNotVisible(); } 只要此页面到达前台,它就会调用OnPageSelected函数。 工作得很好,除了我想在我的适配器上调用一个函数。 我认为这样可行,除了我的适配器一直返回NULL(即使它被初始化并且数据在我的列表视图中被加载为首选)。 public class AfterCheckFragment extends Fragment implements OnPageSelectListener{ private ListView listView; private List checkList; private CheckListAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_check, container, false); System.out.println(“VIEW create […]

具有嵌套片段的ViewPager?

我的问题 根据谷歌的文档: 您现在可以将片段嵌入片段中。 这对于您希望将动态和可重用的UI组件放入自身动态且可重用的UI组件的各种情况都很有用。 例如, 如果使用ViewPager创建 向左和向右滑动并占用大部分屏幕空间的 片段 , 则现在可以将片段插入到每个片段页面中。 要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager()。 这将返回一个FragmentManager,您可以像通常从顶级活动那样使用它来创建片段事务。 例如,这里有一些代码可以在现有的Fragment类中添加一个片段: Fragment videoFragment = new VideoPlayerFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.video_fragment, videoFragment).commit(); 所以我创建了自己的PageFragment 。 我的PageFragmentAdapter由3页PageFragmentAdapter组成。 我还有六个片段: Fragment1 , Fragment2 , Fragment3 , FragmentA , FragmentB , FragmentC 。 在我的MainActivity我初始化了我的六个片段,我的ViewPager和它的PageFragmentAdapter (它自己初始化了三个PageFragment )。 然后我使用这个方法将Fragment1 , Fragment2 , Fragment3附加到PageFragment每个页面(到每个PageFragment ): PageFragmentAdapter tPageFragmentAdapter = new PageFragmentAdapter(getSupportFragmentManager()); tPageFragmentAdapter.setFirstPage(tFragment1); […]

FragmentPagerAdapter getItem位置错误

我有FramentPageAdapter的奇怪问题 MainActivity.java @SuppressLint(“ValidFragment”) public class MainActivity extends FragmentActivity implements ActionBar.TabListener { … … @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(0)).setTabListener(this).setIcon(R.drawable.rating_good)); actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(1)).setTabListener(this).setIcon(R.drawable.action_search)); actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(2)).setTabListener(this).setIcon(R.drawable.action_search)); } […]

在Android ViewPager中删除项目+滚动到下一步

我有一个包含ViewPager的Activity,它显示N个片段。 每个片段都在我的ViewPager的自定义适配器中显示ArrayList中对象的属性(扩展FragmentStatePagerAdapter )。 该片段具有(除其他外)一个按钮,该按钮应该删除当前显示的片段并使用setCurrentItem(position, true)滚动到下一个片段,以便如果用户向后滚动,则前一个项目消失。 我通过使用这样的东西(简化)这样做: deleteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MyActivity parentActivity = (MyActivity)getActivity(); // First, scroll to next item (smoothly) parentActivity.pager.setCurrentItem(parentActivity.pager.getCurrentItem()+1, true); // Database stuff… doSomeDBOperations(); // Method in Activity that removes the current object (I believe this method is working fine and yes, it calls notifyDataSetChanged()) parent.removeObject(currentObject); } […]