¿Cómo ir a otras pestañas haciendo clic en un botón de la pestaña actual en Android?

Estoy tratando de escribir un código en Android, para cambiar de una pestaña a otra ficha haciendo clic en un botón.

Sé que al hacer clic en la pestaña se puede cambiar de una pestaña a otra, pero puede ser posible cambiar de una pestaña a otra ficha haciendo clic en un botón.

He intentado el siguiente tutorial.

Android Tab Layout with Swipeable Views

En este tutorial he editado el archivo MovieFragment.java de la siguiente manera.

MovieFragment.java

package info.androidhive.tabsswipe; import info.androidhive.tabsswipe.R; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class MoviesFragment extends Fragment { ViewPager viewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_movies, container, false); Button btn = (Button) rootView.findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(0); } }); return rootView; }} 

Código XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#17df0d"> <android.support.v4.view.ViewPager android:id="@+id/myfivepanelpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Design Movies Screen" android:textSize="20dp" android:layout_centerInParent="true"/> <Button android:id="@+id/btn" android:layout_width="100dp" android:layout_height="80dp" android:text="Click" /> </RelativeLayout> 

He creado un botón en la disposición del xml y que intenta cambiar a la lengüeta -1 pero estoy consiguiendo la excepción del indicador nulo.

Código de error:

 05-20 09:07:10.995: E/AndroidRuntime(1117): FATAL EXCEPTION: main 05-20 09:07:10.995: E/AndroidRuntime(1117): java.lang.NullPointerException 05-20 09:07:10.995: E/AndroidRuntime(1117): at info.androidhive.tabsswipe.MoviesFragment$1.onClick(MoviesFragment.java:33) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.view.View.performClick(View.java:4240) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.view.View$PerformClick.run(View.java:17721) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Handler.handleCallback(Handler.java:730) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Handler.dispatchMessage(Handler.java:92) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Looper.loop(Looper.java:137) 05-20 09:07:10.995: E/AndroidRuntime(1117): at android.app.ActivityThread.main(ActivityThread.java:5103) 05-20 09:07:10.995: E/AndroidRuntime(1117): at java.lang.reflect.Method.invokeNative(Native Method) 05-20 09:07:10.995: E/AndroidRuntime(1117): at java.lang.reflect.Method.invoke(Method.java:525) 05-20 09:07:10.995: E/AndroidRuntime(1117): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 05-20 09:07:10.995: E/AndroidRuntime(1117): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 05-20 09:07:10.995: E/AndroidRuntime(1117): at dalvik.system.NativeStart.main(Native Method) 

Por favor, sugerirme alguna solución o alguna buena técnica para hacerlo.

2 Solutions collect form web for “¿Cómo ir a otras pestañas haciendo clic en un botón de la pestaña actual en Android?”

Tienes que llamar a la vista padre dentro de tu fragmento.

 public class MoviesFragment extends Fragment { ViewPager viewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_movies, container, false); Button btn = (Button) rootView.findViewById(R.id.btn); viewPager = (ViewPager) getActivity().findViewById(R.id.pager); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(0); } }); return rootView; } } 

su ViewPager es nulo porque no está inicializando la variable.

Necesitas hacer

 public class MoviesFragment extends Fragment { ViewPager viewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_movies, container, false); Button btn = (Button) rootView.findViewById(R.id.btn); viewPager = (ViewPager) rootView.findViewById(R.id.some_viewpager);//Initializing btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(0); } }); return rootView; }} 
  • ViewPager primer fragmento mostrado siempre es incorrecto con FragmentStatePager
  • Android: establece las pestañas predeterminadas pero sin ningún contenido
  • Creación de botones de pestaña personalizados
  • Cambio de vista dentro de TabHost (una actividad, varias vistas)
  • Android Añadir pestaña dentro del fragmento
  • Android ActionBar Tabs color de fondo modo dividido
  • (ActionBar) Tabs + Pager + detail Fragmentos dentro del contenedor ViewPager
  • ¿Cómo cambio el fondo de un widget de pestaña de Android?
  • ¿Cómo implemento el deslizamiento entre pestañas en Android?
  • Android: ¿Cómo se ocultan las pestañas en la barra de acción?
  • ¿Cómo configurar la pestaña predeterminada de múltiples vistas panorámicas con pestañas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.