Cómo obtener acceso a mi botón en una de mis páginas de viewpager?
Soy nuevo en este android y java.
Mi viewpager ahora puede deslizar todo mi diseño de xml, pero no sé cómo tener acceso al artículo en ellos.
- Tab Título en tablayout + view pager No se muestra en Android 5.0 y superior después de agregar CoordinatorLayout
- TabLayout con viewpager no desplazamiento suave
- Viewpager vertical en la más reciente biblioteca de soporte técnico de Android da errores
- Aplique PageTransformer a PagerView tan pronto como sea posible
- ViewPager onPageSelected para la primera página
Intenté usar el Button mybutton = (Button) findViewById (R.layout.result)
, a continuación, establecer el onClickListener
en mybutton, pero luego se vio obligado a cerrar cada vez que lo ejecute.
Aquí está mi código:
public class main extends Activity { private ViewPager myviewpager; private ViewPagerAdapter myviewpageradapter; private static int NUM_AWESOME_VIEWS = 12; Button button_1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myviewpageradapter = new ViewPagerAdapter(); myviewpager = (ViewPager) findViewById(R.id.myviewpager); myviewpager.setAdapter(myviewpageradapter); button_1 = (Button) myviewpager.findViewById(R.id.first_button); button_1.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); } private class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return NUM_AWESOME_VIEWS; } @Override public Object instantiateItem(View collection, int position) { LayoutInflater layoutinflater = getLayoutInflater(); View view; view = layoutinflater.inflate(R.layout.page1, null); switch (position) { case 0 : view = layoutinflater.inflate(R.layout.page1, null); break; case 1 : view = layoutinflater.inflate(R.layout.page2, null); break; case 2 : view = layoutinflater.inflate(R.layout.page3, null); break; case 3 : view = layoutinflater.inflate(R.layout.page4, null); break; case 4 : view = layoutinflater.inflate(R.layout.page5, null); break; case 5 : view = layoutinflater.inflate(R.layout.page6, null); break; case 6 : view = layoutinflater.inflate(R.layout.page7, null); break; case 7 : view = layoutinflater.inflate(R.layout.page8, null); break; case 8 : view = layoutinflater.inflate(R.layout.page9, null); break; case 9 : view = layoutinflater.inflate(R.layout.page10, null); break; case 10 : view = layoutinflater.inflate(R.layout.page11, null); break; case 11 : view = layoutinflater.inflate(R.layout.result, null);break; } ((ViewPager) collection).addView(view,0); return view; } @Override public void destroyItem(View collection, int position, Object view) { ((ViewPager) collection).removeView((View) view); } @Override public boolean isViewFromObject(View view, Object object) { return view==((View)object); } @Override public void finishUpdate(View arg0) {} @Override public void restoreState(Parcelable arg0, ClassLoader arg1) {} @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) {} }
- FragmentPagerAdapter muestra todo el contenido del fragmento en la primera página
- Android ViewPager con RecyclerView funciona incorrectamente dentro de BottomSheet
- Endless ViewPager android
- FragmentTabHost - No se conoce ninguna pestaña null
- Soporte de vista de Android para ViewPager
- Android: el mejor enfoque para pasar datos entre fragmentos de viewpager
- Cambiar el color de desplazamiento excesivo de ViewPager
- Implemente arrastrar elemento a la función de borde de pantalla
Puede ser simplemente el problema, que sus artículos no se encuentran probablemente así que intente esto (si su opinión no es LinearLayout lo cambia)
LayoutInflater getView = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout view1 =(LineaLayout)getView.inflate(R.layout.your_view,null);
Pero su botón puede lanzar la excepción además hay un onClickListener fijado a él. Si es sólo el botón definirlo en XML:
android:onClick"buttonClick"
Luego en el código
public void buttonClick(View v){ // do something }
Si esto no es posible porque necesita hacer referencia al botón más tarde, me quedé con el mismo problema y me gustaría saber cómo funciona.
Creo que el problema aquí es que usted está tratando de encontrar una vista (findViewById) que no se instatiated (inflados) todavía. Intente establecer el oyente de botón dentro del método instatiateItem del tipo ViewPagerAdapter.
Ejemplo:
switch(position){ case 0 : view = layoutinflater.inflate(R.layout.page1, null); button_1 = (Button) view.findViewById(R.id.first_button); button_1.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); break; (...) }
- ANR errors – SCREEN OFF – ¿Cómo se supone que debo manejarlos?
- Mensaje de notificación de AudioTrack corriente