No se puede utilizar las pestañas con Sherlock
Ok, así que estoy tratando de usar Sherlock para mostrar varias pestañas, cada uno por un fragmento. Sólo tengo 4 clases: una para mi actividad principal, dos para mis fragmentos y otra para el TabListener. Todo debe estar bien (tengo el mismo programa sin Sherlcock, trabajando en dispositivos 4.0), así que no puedo entender por qué obtengo esa NullPointerException.
Aquí es parte del error
- Fragmento de actualización de Android ViewPager
- Androide; Fragmentos se superponen al cambiar las pestañas
- Añadir pestañas a la izquierda con FragmentPagerAdapter
- Indicador de pestaña personalizada (con la flecha hacia abajo como indicador)
- Ficha de Android como pie de página
05-18 17:46:57.197: E/AndroidRuntime(9312): FATAL EXCEPTION: main 05-18 17:46:57.197: E/AndroidRuntime(9312): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.micky.testing/com.micky.testing.SherlockTestActivity}: java.lang.NullPointerException ... 05-18 17:46:57.197: E/AndroidRuntime(9312): Caused by: java.lang.NullPointerException 05-18 17:46:57.197: E/AndroidRuntime(9312): at com.micky.testing.MyTabListener.onTabSelected(MyTabListener.java:21) ... 05-18 17:46:57.197: E/AndroidRuntime(9312): at com.micky.testing.SherlockTestActivity.onCreate(SherlockTestActivity.java:39)
Aquí está uno de mi fragmento:
InicioFragmento
import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.actionbarsherlock.app.SherlockFragment; public class HomeFragment extends SherlockFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.homefragment, container, false); } }
Aquí está mi tabListener:
MyTabListener
public class MyTabListener implements TabListener { public SherlockFragment fragment; MyTabListener(SherlockFragment fr) { Log.d("MYTAG", "Creating a fragmentListener w/ " + fr); this.fragment = fr; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Log.d("TAG", "" + fragment); ft.replace(R.id.fragment_container, fragment); }
}
Y mi actividad principal:
SherlockTestActivity
public class SherlockTestActivity extends SherlockActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //We take the support actionbar ActionBar ab = getSupportActionBar(); //We set to navigationmode with tabs ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //we create the tabs ActionBar.Tab homeTab = ab.newTab().setText("Home"); ActionBar.Tab tagsTab = ab.newTab().setText("Tags"); //We create the fragments SherlockFragment homeFragment = new HomeFragment(); SherlockFragment tagsFragment = new TagFragments(); //And we set the tabsListener; homeTab.setTabListener(new MyTabListener(homeFragment)); tagsTab.setTabListener(new MyTabListener(tagsFragment)); Log.d("","" + homeTab); ab.addTab(homeTab); ab.addTab(tagsTab); }
Ok, por lo que el error parece ser lanzado cuando agrego la pestaña a mi barra de acción. Y cuando no agrego TabListener a la pestaña, no hay error. El código ft.replace(R.id.fragment_container, fragment);
(MyTabListener) parece ser el problema, pero no puedo llegar a entender por qué. fragmento no es nulo (inicializado al instanciar un nuevo tabListener), y no hay ninguna razón el fragmento_container es incorrecto.
Así que si alguien puede ayudar a ayudarme por aquí! Gracias !
- ¿Cómo cargar la actividad del fragmento el método de creacion () de la barra seleccionada de la barra de acciones solo si la pestaña está seleccionada?
- Listview no actualizar en fragmento con las pestañas viewpager
- Método de Fragmento tabulado de llamada de la actividad
- Necesita una respuesta definitiva para diseñar las pestañas de Android ActionBar
- Cómo actualizar el contenido de la ficha de fragmento en el botón de clic
- Transacción entre fragmentos sólo dentro de una pestaña ActionBar
- ¿Cómo mantener el estado del fragmento sin backstack en la pestaña?
- Actualizar Actividad actual haciendo clic en la pestaña activa
Debería extender la Actividad de SherlockFragment en lugar de SherlockActivity. Utilice una actividad de fragmento cuando administre fragmentos.
- Android ImageView obtiene una imagen escalada en la pantalla
- manejar excepciones no controladas en Android