Enviar valores de la actividad ViewPager a un fragmento por paquete
Tengo una actividad ViewPager que llama al fragmento que representa el diseño de la diapositiva.
Lo que necesito es pasar los valores de la actividad a fragmento por paquete. ¿Como puedo hacer esto? Intento pasar un int 2 en onCreate () pero no funciona y yo
- Cómo almacenar sparsearray en paquete
- Convertir mapa a bundle en android
- Android: guardar el estado de la aplicación
- Convertir JSON a Android Bundle
- ¿Ciclo de vida de la actividad?
Actividad:
@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen_slide); Intent intent = new Intent(this,ScreenSlidePageFragment.class); Bundle bundle = new Bundle(); bundle.putInt("SIDE",2); intent.putExtras(bundle); /** * Instantiate a ViewPager and a PagerAdapter */ mPager = (ViewPager)findViewById(R.id.pager); mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); mPager.setAdapter(mPagerAdapter); mPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { if(itemOld > arg0){ auxBack--; SIDE=1; } else if(itemOld < arg0){ auxFront++; SIDE=0; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); } @Override public void onBackPressed(){ if(mPager.getCurrentItem()==0){ super.onBackPressed(); }else{ 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 ScreenSlidePageFragment getItem(int arg0) { return new ScreenSlidePageFragment(); } @Override public int getCount() { //Toast.makeText(getApplicationContext(), "Num pages " + NUM_PAGES, Toast.LENGTH_LONG).show(); return NUM_PAGES; } }
}
Fragmento:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int tID = ((ScreenSlidePagerActivity)getActivity()).getIntent().getExtras().getInt("SIDE"); Toast.makeText(getActivity(), "Side selected....." +tID, Toast.LENGTH_LONG).show();
- Guardar paquete con SharedPreferences
- Obtener cadena del paquete android devuelve null
- Cómo guardar un paquete completo en SharedPreferences
- Cómo hacer una lista <enum> parcelable?
- Adt eclipse bundle 02-07-2014 ACTUALIZACIÓN
- Transmitir entero entre actividades e intentos en Android siempre resulta en cero / nulo
- ¿Pasar un paquete en startActivity ()?
- ¿Cómo puedo pasar los datos de un BroadcastReceiver a una actividad iniciada?
Tienes que configurar tu Bundle a través del método setArguments (), no la intención. Si tiene un ViewPager, puede pasar sus argumentos al PagerAdapter, y establecer los argumentos cuando se está instanciando el fragmento.
No entiendo cómo se calcula su SIDE y qué significa, así que muestro el ide general.
@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen_slide); Bundle bundle = new Bundle(); bundle.putInt("SIDE",2); /** * Instantiate a ViewPager and a PagerAdapter */ mPager = (ViewPager)findViewById(R.id.pager); mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), bundle); mPager.setAdapter(mPagerAdapter); } /** * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in sequence */ private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{ private final Bundle fragmentBundle; public ScreenSlidePagerAdapter(FragmentManager fm, Bundle data){ super(fm); fragmentBundle = data; } @Override public ScreenSlidePageFragment getItem(int arg0) { final ScreenSlidePageFragment f = new ScreenSlidePageFragment(); f.setArguments(this.fragmentBundle); return f; } @Override public int getCount() { return NUM_PAGES; } }
Fragmento
@Override public void onCreate(Bundle state) { super.onCreate(state); final Bundle args = getArguments(); final int side = args.getInt("SIDE"); }
Esta puede no ser la solución que usted está pidiendo exactamente pero es lo que hago y puede ayudar a alguien:
Cree un método público en su fragmento:
public void doSomething(String myValue){ // Do stuff in your fragment with myValue }
En su actividad, obtenga el fragmento de su adaptador. Usted sabe qué fragmento se basa en el orden en que se agregó pulg Ejecutar su método de fragmento, pasando en su variable (s):
// Get FriendsFragment (first fragment) MyFragment fragment = (MyFragment) mAdapter.getItem(0); fragment.doSomething("some-value");