view pager一次又一次地扫描相同的图像

时间:2017-01-23 09:37:13

标签: java android android-fragments android-viewpager

我一直致力于app(基于问答)。我已经包含了查看寻呼机来刷图像,但它只是滑动相同的图像。

调用类的类的代码(其中视图分页器包含在活动中)

package com.example.joshiyogesh.puzzle;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class ExerciseOneQuestionList extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exercise_one_question_list);
    }

    public void questionOne(View view) {

        Intent intent = new Intent(getApplicationContext(),ExerciseOneQuestions.class);
        intent.putExtra("question_index",0);
        startActivity(intent);
    }
}

ExerciseOneQuestion.java

package com.example.joshiyogesh.puzzle;

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class ExerciseOneQuestions extends AppCompatActivity {
    ViewPager viewPager;
    public int questionIndexReceive;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exercise_one_questions);
        questionIndexReceive = getIntent().getIntExtra("question_index",1);
//        questionIndexReceive =Integer.parseInt(getIntent().getStringExtra("question_index"));
        viewPager = (ViewPager)findViewById(R.id.pager);
        PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(pagerAdapter);
    }
}

寻呼机适配器类

package com.example.joshiyogesh.puzzle;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class PagerAdapter extends FragmentPagerAdapter {
    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        position = new ExerciseOneQuestions().questionIndexReceive;
        Fragments fragments = new Fragments();
        Bundle bundle = new Bundle();
        bundle.putInt("question_no",position);
        fragments.setArguments(bundle);
        return fragments;
    }

    @Override
    public int getCount() {
        return 2;
    }
}

片段类

public class Fragments extends Fragment {
    ImageView imageView;
    @Override
    public View onCreateView(LayoutInflater inflater , ViewGroup container ,
                             Bundle savedInstanceState){

        int [] image_index = {R.drawable.eightypageanswer1,R.drawable.eightypageanswer8};
        Bundle bundle = getArguments();
        int message = bundle.getInt("question_no");
        View rootView = inflater.inflate(R.layout.fragments,container,false);
        imageView = (ImageView) rootView.findViewById(R.id.imageQuestions);
        imageView.setImageResource(image_index[message]);
        return rootView;
    }
}

出于测试目的我只考虑了两个整数的图像,但它总是刷相同的图像,即第一个图像。

而不是在ExerciseOneQuestionList.java中更改“question_index” 在这......

public void questionOne(View view) {

        Intent intent = new Intent(getApplicationContext(),ExerciseOneQuestions.class);
        intent.putExtra("question_index",0);
        startActivity(intent);
    }

无法理解为什么它总是显示相同的图像?

2 个答案:

答案 0 :(得分:0)

似乎问题在线

position = new ExerciseOneQuestions().questionIndexReceive;

似乎位置始终设置在相同的数字上。

答案 1 :(得分:0)

我真的不知道你在做什么这个“新的ExerciseOneQuestions()。questionIndexReceive;”线。但是以标准方式,您应该制作两个片段,然后将这些片段添加到适配器。其余的事情将由适配器完成,遵循粗略的代码可能会帮助您:

public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);    // Which Fragment should be dislpayed by the viewpager for the given position

    }

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

在类中创建两个片段对象,通过调用addFragment方法然后调用setadapter将它们添加到适配器中。