【问题标题】:Android PagerView between Activities活动之间的Android PagerView
【发布时间】:2012-04-08 14:23:32
【问题描述】:

我希望能够在五个活动/屏幕之间滑动,每个活动/屏幕都有不同的功能但相互关联,因此 UI 概念在每个之间滑动。

我发现了很多关于 ViewPager 和 PagerAdapters 等的讨论,但似乎找不到在不同活动屏幕之间滑动切换的讨论。

这甚至可能吗?有人可以用源代码指向我的示例项目吗?或者告诉我如何调整现有教程来做我想做的事?

非常感谢,祝你好运!

【问题讨论】:

  • 我无法为您提供活动示例。如果您愿意,我可以提供一个将 Compatibility Pack 操作栏选项卡和片段与 ViewPager 一起使用的应用程序的代码示例。基本上,每个选项卡都是一个片段,托管在一个主要活动中(不过,我的应用程序正在稳步增加其他活动的其他任务)。但是你必须愿意使用片段,而不是活动。有兴趣吗?

标签: android android-activity swipe


【解决方案1】:

您不能使用ViewPagerActivities 之间滑动。您需要将五个Activities 中的每一个转换为Fragments,然后将所有FragmentActivityAdapterViewPager 一起使用。

Here's a link 详细介绍了如何转换您当前的Activities 信息Fragments

这是 Android 开发者网站上的Fragment topic,它有很多有用的信息。

Here's another example(完整源代码)在每一页上都增加了TextViews

这是我输入的一个例子:

PagerAdapter

public class PagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragments = new ArrayList<Fragment>();

    public PagerAdapter(FragmentManager manager) {
        super(manager);
    }

    public void addFragment(Fragment fragment) {
        mFragments.add(fragment);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }
}

这应该在您的FragmentActivityonCreate 中调用

    private void initPaging() {

    FragmentOne fragmentOne = new FragmentOne();
    FragmentTwo fragmentTwo= new FragmentTwo();

    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
    pagerAdapter.addFragment(fragmentOne);
    pagerAdapter.addFragment(fragmentTwo);

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
    viewPager.setAdapter(pagerAdapter);
}

这是您将用于 FragmnetActivity 的布局示例:

<?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/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

要创建 Fragment,请创建一个扩展 Fragment 的新类。您想要override 的前两种方法是onActivityCreatedonCreateView

您可以这样做:

public class FragmentOne extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(THE_LAYOUT_FROM_YOUR_ORIGINAL_ACTIVITY, container, false);
    return view;
    }
}

【讨论】:

  • 通过谷歌找到这个;设置适配器时我不断收到错误:“this.mPagerAdapter”。 “mPagerAdapter 无法解析或不是字段”。这是我唯一的错误。 mPagerAdapter 在 PagerAdapter 中工作。不知道如何解决它。如果我删除“这个”。我收到一个警告,说 initialisePaging() 没有在本地使用。感谢看到此内容的人提供的任何帮助
  • 我有一个问题,Aneal,如何从 FragmentOne 向此适配器添加新片段?因为我有这个片段“某种主屏幕”,如果我点击那里的某些东西,那么它会将我带到另一个屏幕,在这种情况下,另一个片段等等......我怎样才能做到这一点?
  • getItem(int position) 被调用两次,因此出现 indexOutOfBound 异常 ...
  • 要添加到已接受的答案,也可以使用PagerAdapter 而不是FragmentPagerAdapter 在视图而不是片段之间切换。
【解决方案2】:

修复 mPageradapter

    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
    pagerAdapter.addFragment(fragmentOne);
    pagerAdapter.addFragment(fragmentEvents);

    viewPager = (ViewPager) super.findViewById(R.id.pager);
    viewPager.setAdapter(pagerAdapter);

【讨论】:

  • getItem(int position) 被调用两次,因此出现 indexOutOfBound 异常
猜你喜欢
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
相关资源
最近更新 更多