2017-01-23 4 views
0

Я работаю над приложением (на основе ответа на вопрос). Я включил просмотр пейджера для прокрутки изображения, но это только прокрутка того же изображения.Пейджер просматривает то же изображение снова и снова

код класса, который вызвать класс (где вид пейджера входит в активности)

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; 
    } 
} 

для целей тестирования Я рассмотрел только два изображения в целых числах, но всегда его проецирует одно и то же изображение.

вместо изменения "question_index" в ExerciseOneQuestionList.java здесь ...

public void questionOne(View view) { 

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

не мог понять, почему его всегда показывать то же изображение?

+0

Вы получаете только первое изображение? Могу ли я знать значение int, которое вы получаете каждый раз? – Nivedh

+0

@Nivedh yup Я всегда получаю первое изображение i.e index 0 –

+0

удалить position = new ExerciseOneQuestions(). QuestionIndexReceive; это может решить вашу проблему. – Nivedh

ответ

0

кажется, что проблема в линии

position = new ExerciseOneQuestions().questionIndexReceive;

кажется, что позиция всегда устанавливается на тот же номер.

+0

Не удалось понять, что если questionIndexReceive был изменен мной вручную, то почему он не меняет позицию в соответствии с вами, если проблема в этой строке –

+0

, и если будет другой способ, то скажем. Что на самом деле сделано здесь, так это то, что изображение меняется внутри фрагментов. И я использовал вышеприведенную строку, потому что дальше, когда будет много изображений, тогда, если пользователь захочет прямо пойти (предположим) 10-е изображение, то это можно сделать напрямую, а также с помощью салфетки –

+0

Var 'position' никогда не должен изменяться. Если вы хотите отобразить ручное изображение в позиции x, вы должны перейти на эту страницу пейджера, используя 'pager.setCurrentItem (x)'. Я не уверен, что полностью понимаю, что вы хотите сделать, но это точно неверно. –

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.

+0

Я пытаюсь узнать на самом деле какая позиция (число) выбрана пользователем. И дело не в применении только двух фрагментов. На самом деле Что я делаю, я меняю изображение внутри фрагментов. –

Смежные вопросы