0

Я пытаюсь использовать RadioGroup как CircularPageIndicator. Проблема заключается в RadioGroup.OnCheckedChangeListener. Кажется, это называется само собой, когда вызывается onPageSelected. Однако я хочу, чтобы он работал наоборот, т. Е. Когда я выбираю radioButton, он должен изменить представление, основанное на расположении индекса Array. Однако кажется, что onCheckedChange никогда не вызывается, когда я меняю чек на переключателе, и поэтому onCheckedChange никогда не запускается.Радиогруппа как индикатор круговой страницы

public class MainActivity extends Activity implements RadioGroup.OnCheckedChangeListener, OnPageChangeListener { 

    ViewPager mImagePager; 
    ImagePagerAdapter mPagerAdapter; 
    RadioGroup mPageIndicator; 
    boolean swipeChange = false; 


    int[] mRadioButtonIds = new int[] { R.id.radio0, R.id.radio1, R.id.radio2, R.id.radio3, R.id.radio4 }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     initComponents(); 
     mPageIndicator.setOnCheckedChangeListener(this); 
     mImagePager.setAdapter(mPagerAdapter); 
     mImagePager.setOnPageChangeListener(this); 
    } 

    /** 
    * 
    */ 
    private void initComponents() { 
     mPageIndicator = (RadioGroup) findViewById(R.id.radioGroup1); 
     mImagePager  = (ViewPager) findViewById(R.id.imgPager); 
     mPagerAdapter = new ImagePagerAdapter(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 

    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    @Override 
    public void onPageSelected(int pSelectedPagePosition) { 
     swipeChange = true; 
     mPageIndicator.check(mRadioButtonIds[pSelectedPagePosition]); 
    } 

    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     if (!swipeChange) { 
      int itemPosition = Arrays.asList(mRadioButtonIds).indexOf(checkedId); 
      mImagePager.setCurrentItem(itemPosition, true); 
      swipeChange = false; 
     } 
    } 

} 

Примечание: Я не хочу использовать какие-либо третьей стороной кода/LIB для создания пользовательских Круговой Page Indicator.

Возможно, здесь любая ошибка. Есть ли причина, по которой RadioGroup не работает?

ответ

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