Android TabHost.addTab - & gt; Exception de pointeur nul
Voici mon code:
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
TabHost tabHost = new TabHost(this);
TabHost.TabSpec tab = tabHost.newTabSpec("tab1");
tab.setIndicator("Tab 1");
tab.setContent(new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
TextView tv = new TextView(Main.this);
tv.setText("tab 1 content");
return tv;
}
});
tabHost.addTab(tab);
setContentView(tabHost);
}
}
J'obtiens cette erreur:
[...]
07-13 20:26:49.261: ERROR/AndroidRuntime(625): Caused by: java.lang.NullPointerException
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at android.widget.TabHost.addTab(TabHost.java:206)
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at test.test.Main.onCreate(Main.java:27)
[...]
J'ai besoin de le faire par code et je ne peux pas utiliser le format XML. Quelqu'un peut-il m'aider à corriger ce code s'il vous plaît ?
source d'informationauteur Joel
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser TabActivity, il doit même disposition particulière à définir en tant que contenu (voir http://developer.android.com/resources/tutorials/views/hello-tabwidget.html). Si vous ne pouvez pas utiliser xml, vous devez construire le même contenu à partir du code java:
}
Pour les personnes qui pourraient s'interroger sur TabActivity être désapprouvé les la documentation dit que vous devez appeler le setup() avant d'ajouter des onglets, lorsque vous n'utilisez pas un TabActivity.
Vérification de la méthode TabHost.addTab(...) dans le cadre de la source indique que votre TabWidget n'est pas encore disponible. Un TabWidget doit être créé dans le premier code, ou par le système lors de la création d'une mise en page et doit avoir un id de
android.R.id.tabs
.Avez-vous pensé au sujet de l'extension TabActivityet puis l'appel de getTabHost() pour obtenir l'instance de la TabHost? Pas sûr de ce que votre objectif est, mais ce pourrait être intéressant de regarder.