Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
Java 检测用户是否正在从viewpager中的片段中滑动_Java_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Java 检测用户是否正在从viewpager中的片段中滑动

Java 检测用户是否正在从viewpager中的片段中滑动,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,我有一个调查应用程序,它是使用viewpager和碎片数组列表实现的。片段有不同的视图类型,一些有单选按钮,一些有输入框。当用户从一个片段导航到另一个片段时,我希望将输入的数据保存到父活动中的共享变量中。当用户到达最后一个片段时,我想显示数据的摘要。当用户从一个片段导航到下一个片段时,我正在考虑保存数据。也不确定这是否是最好的方法 List<Question> questions = new SurveyServiceImpl(getApplicationContext())

我有一个调查应用程序,它是使用viewpager和碎片数组列表实现的。片段有不同的视图类型,一些有单选按钮,一些有输入框。当用户从一个片段导航到另一个片段时,我希望将输入的数据保存到父活动中的共享变量中。当用户到达最后一个片段时,我想显示数据的摘要。当用户从一个片段导航到下一个片段时,我正在考虑保存数据。也不确定这是否是最好的方法

    List<Question> questions = new SurveyServiceImpl(getApplicationContext()).getSurveyQuestions(1);
    ArrayList<Fragment> questionFragments = new ArrayList<>();
    questionFragments.add(HomeFragment.newInstance("", ""));
    for (int i = 0; i < questions.size(); i++) {
        switch (questions.get(i).getQuestionType()) {
            case SELECT:
                if (questions.get(i).getMaximumOptionsRequired() == 1)
                    questionFragments.add(QuestionTypeSelect.newInstance("", questions.get(i)));
                else
                    questionFragments.add(QuestionTypeCheckBox.newInstance("", questions.get(i)));
                break;
            case INPUT:
                questionFragments.add(QuestionTypeInput.newInstance("", questions.get(i)));
                break;
            default:
        }
    }
    questionFragments.add(EndFragment.newInstance("", ""));
    final ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager(), questionFragments));
List questions=newSurveyServiceImpl(getApplicationContext()).getSurveyQuestions(1);
ArrayList questionFragments=新的ArrayList();
添加(HomeFragment.newInstance(“,”);
对于(int i=0;i
在我的头顶上: 在每个片段中更改数据后立即保存:
对于EditText,使用:在中更改文本时保存文本
对于单选按钮,使用radioButton.setOnClickListener(/**在onClick*/中保存数据),或者如果您使用的是RadioGroup。
可能不是最有效的解决方案,但有效:)。

在我的脑海中: 在每个片段中更改数据后立即保存:
对于EditText,使用:在中更改文本时保存文本
对于单选按钮,使用radioButton.setOnClickListener(/**在onClick*/中保存数据),或者如果您使用的是RadioGroup。

可能不是最有效的解决方案,但有效:)。

将OnPageChangeListener用于:所有卷轴;以页面为中心;页面滚动更改(开始拖动,完成中心动画)


将OnPageChangeListener用于:所有卷轴;以页面为中心;页面滚动更改(开始拖动,完成中心动画)


嗯,除非你在向导流程中做了一些保存复选标记,表示该页面的所有数据都已保存,否则我不会亲自走这条路。您可以很容易地识别页面更改的侦听器

      vpMain.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            //Generated method stub
        }

        @Override
        public void onPageSelected(int position) {
            setCurrentPage(position);
            PAGE_TO_RETURN_TO = position;
            vpMain.setCurrentItem(PAGE_TO_RETURN_TO);
            validate data and allow to scroll or save
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            //Generated Method Stub
        }
    });

但我更希望看到父活动句柄的onPause()亲自保存数据。但这实际上取决于你对应用程序的需求。

嗯。除非你在向导流程中做了某种保存复选标记,表示该页面的所有数据都已保存,否则我不会亲自去做。您可以很容易地识别页面更改的侦听器

      vpMain.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            //Generated method stub
        }

        @Override
        public void onPageSelected(int position) {
            setCurrentPage(position);
            PAGE_TO_RETURN_TO = position;
            vpMain.setCurrentItem(PAGE_TO_RETURN_TO);
            validate data and allow to scroll or save
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            //Generated Method Stub
        }
    });
但我更希望看到父活动句柄的onPause()亲自保存数据。但这取决于你对应用的需求