La présentation graphique de FragmentTabHost ne rend pas

La disposition graphique pour un simple android.support.v4.app.FragmentTabHost ne rend jamais dans Eclipse ou Android Studio.
L’erreur de console que j’obtiens est constamment:
Exception raised during rendering: No tab known for tag null

J’utilise le fichier XML le plus basique:

        

mais la même erreur se produit.

Je voulais juste append plus de vues au-dessus ou au-dessous du widget d’onglet et de la mise en page du cadre.
Je ne me soucie pas tellement de voir le contenu de l’onglet; Je veux juste voir le rest de ma mise en pagemais le problème est que AUCUNE AUTRE VUE n’est rendue lorsqu’un android.support.v4.app.FragmentTabHost réside dans la mise en page .

J’ai lu et essayé de résoudre le problème à partir de la réponse à ce post:
Android: tabs en bas avec FragmentTabHost
mais je ne pense pas que ce soit mon problème; Je ne cherche pas à mettre un TabWidget en bas.

Tous mes autres fichiers XML s’ouvrent parfaitement.

Le même problème se produit dans Android Studio:
Android Studio ne rend pas cela non plus

J’ai eu le même problème de rendu ainsi que des erreurs de compilation. J’ai résolu le problème en constatant que je ne transmettais pas Fragment lorsque je créais Addtab. Vous devez transmettre au moins un fragment sur mTabHost.addTab. Voici le code de travail.

 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")); 

Je ne suis pas sûr de l’erreur que vous avez (désolé, je suis vraiment occupé en ce moment, donc je ne peux pas passer plus de temps à vérifier) ​​mais en général, il semble que FragmentTabHost des bibliothèques de support ne se soucie pas du xml. Voir ma réponse précédente à une autre question:

FragmentTabHost avec défilement horizontal

De la mise en page j’obtiens la même erreur..si, je résous ce problème par code seulement … ça marche bien..Veuillez essayer ce code

 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 itemsToBeDisplayed; for (Ssortingng subItem : itemsToBeDisplayed) { // Give along the name - you can use this to hand over an ID for example Bundle b = new Bundle(); b.putSsortingng("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")) { Ssortingng subItem = extras.getSsortingng("TAB_ITEM_NAME"); // Do something with that ssortingng } } } } 

Si vous avez besoin de mettre des tabs fragmentés en bas de l’écran …

Faites votre fichier XML comme ça ..

         

Maintenant, si votre préoccupation est d’ouvrir plusieurs fragments avec des tabs fragmentés uniques …

@ suivre les étapes ::

  1. Créez un fragment de conteneur. Ce fragment de conteneur sera par défaut pour tous les contenus de vos tabs.
  2. Pour chaque contenu d’onglet, remplacez le fragment U nécessaire par ce conteneur.

Pour ex: – Tout comme vous remplacez votre lit par des draps différents .. 🙂

Votre classe de fragment de conteneur qui sera utilisée différemment dans différents tabs … “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 —> c’est le fichier xml container_fragment.xml

     

@ Comment utiliser Conatiner ..

  1. Pour chaque fragment, le besoin en U sera remplacé par l’identifiant de ce fragment de conteneur.

@last votre classe 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; } } 

J’espère que ça aide ….. Cheers!

pas sûr …. mais votre mise en page ne devrait-elle pas comporter une balise tabhost au-dessus de la disposition linéaire du tableau?

  

J’ai fait une application il ya quelque temps qui impliquait des tabs en utilisant tabhost et voici comment ma mise en page était … un onglet avait une vue de calendrier on avait un sélecteur d’image et on avait une liste de lecture … désolé je ne peux pas être plus d’aide