Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


El diseño gráfico de FragmentTabHost no procesa

El diseño gráfico de un sencillo android.support.v4.app.FragmentTabHost nunca se procesa en Eclipse o Android Studio.
El error de consola que recibo es coherente:
Exception raised during rendering: No tab known for tag null

Estoy utilizando el archivo XML más básico:

 <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TabWidget android:id="@android:id/tabs" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0"/> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> </LinearLayout> </android.support.v4.app.FragmentTabHost> 

Pero se produce el mismo error.

Sólo quería agregar más vistas por encima o por debajo del widget de pestañas y el diseño del marco.
No me importa tanto ver el contenido de la pestaña; Sólo quiero ver el resto de mi diseño , pero el problema es que NO HAY OTRAS VISTAS se representan cuando un android.support.v4.app.FragmentTabHost reside en el diseño .

He leído e intentado resolver el problema desde la respuesta a este mensaje:
Android: pestañas en la parte inferior con FragmentTabHost
Pero no creo que ese sea mi problema; No estoy buscando poner un TabWidget en la parte inferior.

Cada uno de mis archivos XML se abre perfectamente.

El mismo problema ocurre en Android Studio:
Android Studio no hace esto tampoco

  • Barra de acción de soporte de Android que no muestra el menú de desbordamiento
  • PreferenceFragmentCompat requiere la preferenciaTheme ser fijado
  • NullPointerException: int android.support.v4.app.FragmentManagerImpl.mCurState Referencia de objeto null
  • Uso de android.support.v4.app o android.app para DialogFragment?
  • Error al utilizar elementos de la biblioteca de soporte de diseño de Android
  • Cómo utilizar AutoScrollHelper
  • Cómo configurar el recuento de notificaciones no leídas en NavigationView de DrawerLayout?
  • Android - aplicar selectableItemBackground en xml con soporte v7
  • 5 Solutions collect form web for “El diseño gráfico de FragmentTabHost no procesa”

    Tuve el mismo problema de procesamiento, así como error de compilación. Fijé el problema encontrando que no estaba pasando Fragment cuando creaba Addtab. Debe pasar al menos un fragmento en mTabHost.addTab. A continuación se muestra el código de trabajo.

     private FragmentTabHost mTabHost; mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(HomeActivity.this, getSupportFragmentManager(), android.R.id.tabcontent); mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("Home"), HomeFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("mysheets").setIndicator("MySheets")); mTabHost.addTab(mTabHost.newTabSpec("bookmarks").setIndicator("Bookmarks")); 

    No estoy seguro sobre el error que tienes (lo siento, estoy realmente ocupado ahora, así que no puedo pasar más tiempo comprobando), pero en general parece que el FragmentTabHost de las librerías de soporte no se preocupa por el xml en absoluto. Vea mi respuesta anterior a otra pregunta:

    FragmentTabHost con desplazamiento horizontal

    Desde el diseño, estoy recibiendo el mismo error … así, resuelvo ese problema sólo por código … Está funcionando bien .. Por favor, pruebe este código

     import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTabHost; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class DetailFragment extends Fragment { /****************************************************************************************************************** * Mandatory empty constructor for the fragment manager to instantiate the fragment (eg upon screen orientation changes). *****************************************************************************************************************/ public DetailFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // R.layout.fragment_tabs_pager contains the layout as specified in your question View rootView = inflater.inflate(R.layout.fragment_tabs_pager, container, false); // Initialise the tab-host FragmentTabHost mTabHost = (FragmentTabHost) rootView.findViewById(R.id.tabhost); mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); // Initialise this list somewhere with the content that should be displayed List<String> itemsToBeDisplayed; for (String subItem : itemsToBeDisplayed) { // Give along the name - you can use this to hand over an ID for example Bundle b = new Bundle(); b.putString("TAB_ITEM_NAME", subItem); // Add a tab to the tabHost mTabHost.addTab(mTabHost.newTabSpec(subItem).setIndicator(subItem), YourContentFragment.class, b); } return rootView; } } /******************************************************** This class contains the actual content of a single tab **********************************************************/ public class YourContentFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getArguments(); if (extras != null) { if (extras.containsKey("TAB_ITEM_NAME")) { String subItem = extras.getString("TAB_ITEM_NAME"); // Do something with that string } } } } 

    Si U necesita poner pestañas fragmentadas en la parte inferior de la pantalla … @ underfree undermentioned –

    Haga su archivo xml como este ..

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> android:layout_alignParentTop="true" --> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" /> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="wrap_content" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dip" android:layout_height="0dip" android:layout_weight="0" /> </android.support.v4.app.FragmentTabHost> </LinearLayout> 

    Ahora, si su preocupación es la apertura de varios fragmentos con en solas pestañas fragmentadas …

    @follow steps ::

    1. Cree un fragmento de contenedor. Este fragmento de contenedor será el predeterminado para todo el contenido de las pestañas.
    2. Para cada contenido de la pestaña, reemplace el fragmento U que necesita con este contenedor.

    Por ejemplo: – Al igual que reemplazar su cama con sábanas diferentes .. 🙂

    Su clase de fragmento de contenedor que se utilizará de forma diferente en diferentes pestañas … "LearnContainerFragment.java"

      public class LearnContainerFragment extends BaseContainerFragment { private boolean mIsViewInited; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e("test", "tab 1 oncreateview"); return inflater.inflate(R.layout.container_fragment, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.e("test", "tab 1 container on activity created"); if (!mIsViewInited) { mIsViewInited = true; initView(); } } private void initView() { Log.e("test", "tab 1 init view"); replaceFragment(new Learn(), false); } } 

    LearnContainerFragment.java —> es el archivo xml container_fragment.xml

      <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container_framelayout" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> 

    @ Cómo usar Conatiner ..

    1. Para cada fragmento U necesidad se reemplazará con id de este fragmento de contenedor.

    @last su clase BaseContainerFragment.java –

     public class BaseContainerFragment extends Fragment { public void replaceFragment(Fragment fragment, boolean addToBackStack) { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); if (addToBackStack) { transaction.addToBackStack(null); } transaction.replace(R.id.container_framelayout, fragment); transaction.commit(); getChildFragmentManager().executePendingTransactions(); } public boolean popFragment() { Log.e("test", "pop fragment: " + getChildFragmentManager().getBackStackEntryCount()); boolean isPop = false; if (getChildFragmentManager().getBackStackEntryCount() > 0) { isPop = true; getChildFragmentManager().popBackStack(); } return isPop; } } 

    Espero que ayude ….. Saludos!

    No está seguro …. pero no debería su diseño tener una etiqueta de tabhost en ella por encima de la disposición lineal de tabwidget?

     <TabHost android:id="@+id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" > 

    Hice una aplicación hace un tiempo que las pestañas implantes utilizando tabhost y esta es la forma en que mi diseño era … una pestaña tenía una vista de calendario uno tenía un conmutador de imagen y uno tenía un listview … lo siento no puedo ser de más ayuda

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" tools:context=".MainActivity" > <TabHost android:id="@+id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" > </TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageSwitcher android:id="@+id/imageSwitcher1" android:layout_width="match_parent" android:layout_height="251dp" > </ImageSwitcher> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical" /> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <CalendarView android:id="@+id/calendarView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> 

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.