Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从一个特定的位置开始分段,并能够转到以前的位置?_Android_Android Fragments_Android Studio - Fatal编程技术网

Android 如何从一个特定的位置开始分段,并能够转到以前的位置?

Android 如何从一个特定的位置开始分段,并能够转到以前的位置?,android,android-fragments,android-studio,Android,Android Fragments,Android Studio,我有一个列表视图。当我单击listView的一个元素时,我传递了两个字符串数组和列表位置。我使用这些信息来启动一个片段寻呼机。一切正常。我得到了信息,一切都显示出来了。假设我点击listItem-5,新的片段将从5开始,我将能够转到6、7、8等等,但我将无法在4、3、2、1向左移动。我如何才能做到这一点 public class ViewPagerFragment extends FragmentActivity { @Override protected void onCre

我有一个列表视图。当我单击listView的一个元素时,我传递了两个字符串数组和列表位置。我使用这些信息来启动一个片段寻呼机。一切正常。我得到了信息,一切都显示出来了。假设我点击listItem-5,新的片段将从5开始,我将能够转到6、7、8等等,但我将无法在4、3、2、1向左移动。我如何才能做到这一点

public class ViewPagerFragment extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_pager_fragment);
        ArrayList<String> email=getIntent().getExtras().getStringArrayList("email");
        ArrayList<String> about=getIntent().getExtras().getStringArrayList("about");
        int listPosition = getIntent().getExtras().getInt("position");


        ViewPager vpPager = (ViewPager) findViewById(R.id.vpPager);
        adapterViewPager = new MyPagerAdapter(getSupportFragmentManager(),email,about,listPosition);
        vpPager.setAdapter(adapterViewPager);
    }

    private SmartFragmentStatePagerAdapter adapterViewPager;

    // Extend from SmartFragmentStatePagerAdapter now instead for more dynamic ViewPager items
    public static class MyPagerAdapter extends SmartFragmentStatePagerAdapter {
        private final ArrayList<String> email;
        private final ArrayList<String> about;
        private int listPosition;

        public MyPagerAdapter(FragmentManager fragmentManager,ArrayList<String> email,ArrayList<String> about,int lPosition) {
            super(fragmentManager);
            this.email=email;
            this.about = about;
            listPosition = lPosition;
        }

        // Returns total number of pages
        @Override
        public int getCount() {
            return email.size();
        }

        // Returns the fragment to display for that page
        @Override
        public Fragment getItem(int position) {
            return FirstFragment.newInstance(email.get(listPosition+position), about.get(listPosition+position));
        }

        // Returns the page title for the top indicator
        @Override
        public CharSequence getPageTitle(int position) {
            return "Page " + position;
        }

    }
}
public类ViewPagerFragment扩展了碎片活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u pager\u fragment);
ArrayList电子邮件=getIntent().getExtras().getStringArrayList(“电子邮件”);
ArrayList about=getIntent().getExtras().getStringArrayList(“about”);
int listPosition=getIntent().getExtras().getInt(“位置”);
ViewPager vpPager=(ViewPager)findViewById(R.id.vpPager);
AdapterViewPage=new MyPagerAdapter(getSupportFragmentManager(),电子邮件,关于,列表位置);
设置适配器(AdapterViewPage);
}
专用SmartFragmentStatePagerAdapter AdapterViewManager;
//现在从SmartFragmentStatePagerAdapter扩展到更动态的ViewPager项目
公共静态类MyPagerAdapter扩展了SmartFragmentStatePagerAdapter{
私人最终ArrayList电子邮件;
私人最终ArrayList关于;
私人职位;
公共MyPagerAdapter(FragmentManager FragmentManager、ArrayList电子邮件、ArrayList关于、int lPosition){
超级(碎片管理器);
this.email=电子邮件;
这个;
listPosition=lPosition;
}
//返回总页数
@凌驾
public int getCount(){
返回email.size();
}
//返回要为该页显示的片段
@凌驾
公共片段getItem(int位置){
返回FirstFragment.newInstance(email.get(listPosition+position),about.get(listPosition+position));
}
//返回顶部指示器的页面标题
@凌驾
公共字符序列getPageTitle(int位置){
返回“页面”+位置;
}
}
}

我没有完全理解代码设计。请允许我了解您的示例场景。如果单击listItem-5,可能使用了以下代码:

adapterViewPager.getItem(0);
如果需要查看片段4,则需要返回。因此,请使用以下代码:

adapterViewPager.getItem(-1);
adapterViewPager = new MyPagerAdapter(getSupportFragmentManager(),email,about, 0);
否则,请使用以下代码:

adapterViewPager.getItem(-1);
adapterViewPager = new MyPagerAdapter(getSupportFragmentManager(),email,about, 0);

请注意第四个参数的值0第一个片段开始

为什么不能创建一个子列表并将其传递给适配器?this.email=email.sublist(listPosition,email.size());this.about=about.sublist(listPosition,about.size());那怎么才能让我刷对呢?比如,你的第五个元素变成第一个元素,接下来的所有元素都会存在,你就能刷对了。我不明白。现在我可以看到所有元素,但顺序不对。我仍然可以向左滑动并查看所有元素。我只是想好好看看他们。如果我在第5项,想向右滑动4次,如果想向右滑动6次。它们应该在最后/第一项结束。我想从一个特定的位置开始,然后从该位置向左或向右滑动,这取决于我不理解的位置前后有多少项。如上所述,将值0传递给第四个参数的代码有什么问题?我认为我理解的问题是,我没有看到与您的问题相关的完整代码。我有一个列表视图。当您单击某个元素时,它将启动启动片段的活动。在开始该活动之前,它会传递这些值(ArrayList电子邮件、ArrayList about和int listPosition)。在活动中,打开的片段应该是位于特定列表位置的片段。@BogdanDaniel,实际上我理解代码设计的这一部分。但是,如果您从listPosition 5开始,您会或多或少地致力于该起始位置。这是我不同意设计的部分。话虽如此,代码adapterViewPager.getItem(-1)有什么问题?当用户向左滑动时,可以调用此方法。我解决了它。我只需要设置viewPager.setCurrentItem(listPosition);