Jump to content

[Résolu] Example TabWidget


Recommended Posts

Bonjour a tous,

au risque de poser un sujet 1000 fois résolu, je ne trouve pas la cause de mon bug... si vous avez du temps, il s'agit de l'example de gestion de tab fournit sur le site http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

J'ai tout rentré je pense correctement, mais ca me fait un "forcer a quitter" et comme je n'ai pas encore mega experience du debug, je ne trouve pas ce qui declenche cette merveille.

Voila les sources :

 package com.example.helloTab;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AlbumsActivity extends Activity {
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       TextView textview = new TextView(this);
       textview.setText("This is the Albums tab");
       setContentView(textview);
   }
}

package com.example.helloTab;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class helloTab extends TabActivity  {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       Resources res = getResources(); // Resource object to get Drawables
       TabHost tabHost = getTabHost();  // The activity TabHost
       TabHost.TabSpec spec;  // Resusable TabSpec for each tab
       Intent intent;  // Reusable Intent for each tab

       // Create an Intent to launch an Activity for the tab (to be reused)
       intent = new Intent().setClass(this, ArtistsActivity.class);

       // Initialize a TabSpec for each tab and add it to the TabHost
       spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                         res.getDrawable(R.drawable.ic_tab_artists))
                     .setContent(intent);
       tabHost.addTab(spec);

       // Do the same for the other tabs
       intent = new Intent().setClass(this, AlbumsActivity.class);
       spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                         res.getDrawable(R.drawable.ic_tab_artists))
                     .setContent(intent);
       tabHost.addTab(spec);

       intent = new Intent().setClass(this, SongsActivity.class);
       spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                         res.getDrawable(R.drawable.ic_tab_artists))
                     .setContent(intent);
       tabHost.addTab(spec);

       tabHost.setCurrentTab(0);
   }
}

<?xml version="1.0" encoding="utf-8"?>


         android:state_selected="true" />


<?xml version="1.0" encoding="utf-8"?>
   android:id="@android:id/tabhost"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="5dp">
           android:id="@android:id/tabs"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content" >
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content">





Mes tests : 1 seule tab, 2 tabs, avec/sans icones, refaire les tab avec le XML_LAYOUT_WIZARD ou je sais pas comment ca s'appelle... d'ailleurs en utilisant cet outil, les tabs n'apparaissent pas en mode "previsualisation". Bref j'ai retenté de tout refaire depuis 0, toujours la meme erreur. Je precise que la premiere source est dupliquée 3 fois en artist, song et album.

Le probleme peut-il venir du fait que je sois sur une target en 2.1, alors que mon projet est minSdkVersion="3"?

Merci d'avance pour toute aide, lien, pensée :)

Edited by howimboe
Link to comment
Share on other sites

est-ce que ce n'est pas simplement le fait que tu nommes ton Activity "AlbumsActivity"

puis tu veux lancer une intent que tu nommes "ArtistsActivity.class" ??

intent = new Intent().setClass(this, ArtistsActivity.class);

=> intent = new Intent().setClass(this, AlbumsActivity.class);

me semblerait plus correct ...

à tester ...

Hub

Link to comment
Share on other sites

désolé j'ai lu un peu vite, est-ce que tu as bien créé trois Activity distinctes : ArtistsActivity, AlbumsActivity, and SongsActivity

(le point 2 du tuto) ?

Ne faut-il pas également "déclarer" ces 3 activity dans ton manifest ?

Edited by cousinHub
Link to comment
Share on other sites

désolé j'ai lu un peu vite, est-ce que tu as bien créé trois Activity distinctes : ArtistsActivity, AlbumsActivity, and SongsActivity

(le point 2 du tuto) ?

Ne faut-il pas également "déclarer" ces 3 activity dans ton manifest ?

je vais chercher dans ce sens la :)

EDIT : oui en effet, il semble falloir ajouter les activités a chaque fois... mais meme en faisant ca, ca me plante mon appli avant la moindre operation.

Edited by howimboe
Link to comment
Share on other sites

pour info également, tu n'es pas "obligé" de faire des Activity séparées pour chaque Tab,

tu peux très bien déclarer tous tes Tabs dans un même Layout et utiliser

tabHost.setCurrentTab(1);

tabHost.setCurrentTab(2);

tabHost.setCurrentTab(3);

etc

pour switcher d'un Tab à l'autre...

http://developer.android.com/intl/fr/reference/android/widget/TabHost.html#setCurrentTab(int)

c'est en fait ce que je fais dans mon appli MétéoBelgique :

http://www.appbrain.com/app/com.cousinHub.meteo

Link to comment
Share on other sites

  • 1 month later...
ça me plante mon appli avant la moindre operation.

quel est le message d'erreur ? tu peux faire un copier/coller du logcat ce sera plus facile pour t'aider? ;)

tu peux également m'envoyer ton projet via MP et je veux bien regarder...

H.

je serais bien interessé pour avoir un bout de code pour faire en XML des TAB avec une unique activity et pas plusieurs...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...