¿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.

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; }} 
  • Cambiar el color de fondo de la pestaña y eliminar la línea divisoria entre pestañas
  • TabHost definido en el diseño está dando NullPointerException durante setContent
  • ActionBarSherlock: las pestañas que aparecen ABOVE barra de acciones con vista personalizada
  • Activar / Desactivar ficha en ActionBar
  • ActionBar Tabs con fragmentos en rotación
  • ViewPager primer fragmento mostrado siempre es incorrecto con FragmentStatePager
  • Cajón de navegación de Android sobre las pestañas
  • Cambiar el ancho de la pestaña en ActionBar.Tab
  • El contenido de Tabhost no se muestra cuando actualizo android.support.v4
  • Android: Cómo hacer una pestaña de la pestaña como el mercado de Android?
  • Android Galaxy Tab: ¿Por qué el ícono de lanzamiento está rodeado por un borde rosa?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.