¿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; }} 
  • ¿Puedo utilizar el estilo de tabulación predeterminado en mi vista de pestaña personalizada?
  • Android: pestañas desplazables
  • Creación de botones de pestaña personalizados
  • Google Map no se muestra en la actividad de la pestaña
  • ¿Cómo hacer que el tamaño de tablayout sea igual?
  • Android: pestañas de las aplicaciones "Noticias y clima"
  • Desactivar el gesto de desplazamiento que abre el cajón de navegación en android
  • Barra de Acción de Android - con pestañas
  • Cambiar a otra pestaña más de una vez da EEROR
  • El contenido de Tabhost no se muestra cuando actualizo android.support.v4
  • ¿ActionBarSherlock permite activar / desactivar un ActionBar.Tab?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.