Questo problema riguarda solo il lecca-lecca. kitkat e le versioni precedenti funzionano correttamente!viewpager non funziona correttamente in lollipop 5.0 quando utilizzo altri frammenti
Il problema è che ho implementato uno slider utilizzando una visualizzazione di pagina, nel primo frammento ho il frammento di login con due pulsanti.
All'avvio dell'app non c'è un problema, ma quando cambio il frammento usando la vista della pagina e di nuovo il frammento di login, i pulsanti non funzionano.
I pulsanti caricano il modulo di registrazione o il modulo di accesso nello stesso frammento. Non c'è un errore, solo il pulsante non fa nulla.
Questo è il codice: il codice
public class ScreenSlideActivity extends ActionBarActivity {
/**
* The number of pages (wizard steps) to show in this demo.
*/
private static final int NUM_PAGES = 5;
/**
* The pager widget, which handles animation and allows swiping horizontally to access previous
* and next wizard steps.
*/
private ViewPager mPager;
/**
* The pager adapter, which provides the pages to the view pager widget.
*/
private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_slide);
// Instantiate a ViewPager and a PagerAdapter.
/*postponeEnterTransition();
mPager.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
mPager.getViewTreeObserver().removeOnPreDrawListener(this);
startPostponedEnterTransition();
return true;
}
});*/
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mPager.setPageTransformer(true, new DepthPageTransformer());
LinePageIndicator indicator = (LinePageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(mPager);
}
@Override
public void onBackPressed() {
if (mPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the system to handle the
// Back button. This calls finish() on this activity and pops the back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}
/**
* A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
* sequence.
*/
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position)
{
case 0:
return new LoginSignupFragment();
default:
return new SlidePageFragment();
}
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
Il primo frammento di caricare il modulo di login o registrati forma è:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_slide_login, container, false);
ingresarBtn = (Button) rootView.findViewById(R.id.ingresarBtn);
ingresarBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment frag = new LoginFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.slide_login_content, frag);
transaction.addToBackStack(null);
transaction.commit();
}
});
unirseBtn = (Button) rootView.findViewById(R.id.unirseBtn);
unirseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment frag = new SignupFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.slide_login_content, frag);
transaction.addToBackStack(null);
transaction.commit();
}
});
return rootView;
}
Se è necessario ulteriori informazioni, darò.