IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

List Activity dans un onglet ?


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut List Activity dans un onglet ?
    Bonjour,

    J'essaye de réaliser une application sous android qui gère les flux rss.
    Chose que j'ai réussi à faire grâce à ce tutoriel : http://android-er.blogspot.fr/2010/0...s-menu-to.html, je met le lien pour que vous voyez à quoi ressemble le code et non pour faire de la pub ...
    A présent j'aimerais créer des onglets et intégrer cette gestion de flux rss dans un onglet mais je ne sais pas du tout comment faire.
    Ma classe hérite de ListActivity et je ne sais pas comment intégrer une list activity dans un onglet.
    J'ai déjà pas mal de mal à comprendre comment fonctionne les onglets, j'ai vu plusieurs tutoriels mais ils ont l'air d’être assez ancien car ils utilisent encore TabActivity et quand j'essaye d'utiliser ça dans eclipse il me le barre ...

    Merci d'avance de votre aide

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Finalement j'ai décidé de créer une autre classe qui va gérer les onglets mais j'en viens au même problème: comment récupérer tout ce qui va se passer dans la classe AndroidRssReader pour le mettre dans mon onglet ?
    J'ai essayé plusieurs choses : j'ai essayé de prendre la vue et la mettre dans le tab avec inflate mais le contenu de la liste est vite, comment faire pour que l'activité AndroidRssReader se lance étant donné qu'elle n'est plus l'activité principale ?
    J'ai essayé de récupérer directement la liste myRssFeed grâce à intent mais je n'ai pas réussi je ne sais pas comment récupérer myRssFeed qui est de type RSSFeed et qui contient des items qui ont des variable de type string.

    Puis je me suis posé la question suivante : comment faire pour lancer une activité dans un onglet ? j'ai trouvé une réponse ici http://stackoverflow.com/questions/1...tab-in-android
    Mais j'ai un message d'erreur lorsque j'ajoute mon activité au tabHost :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    03-05 22:44:56.395: E/AndroidRuntime(772): FATAL EXCEPTION: main
    03-05 22:44:56.395: E/AndroidRuntime(772): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tabtest/com.example.tabtest.Main}: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.os.Looper.loop(Looper.java:123)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at java.lang.reflect.Method.invoke(Method.java:521)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at dalvik.system.NativeStart.main(Native Method)
    03-05 22:44:56.395: E/AndroidRuntime(772): Caused by: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:649)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.widget.TabHost.setCurrentTab(TabHost.java:323)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.widget.TabHost.addTab(TabHost.java:213)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at com.example.tabtest.Main.onCreate(Main.java:37)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    03-05 22:44:56.395: E/AndroidRuntime(772): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    Main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    package com.example.tabtest;
     
    import java.util.List;
     
     
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.TabHost;
    import android.widget.TabHost.TabSpec;
     
    public class Main extends Activity{
     
     
    	public void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
     
    		TabHost tab=(TabHost) findViewById(android.R.id.tabhost);
    		tab.setup();
    		TabSpec ongletAccueil=tab.newTabSpec("Accueil");
    		TabSpec ongletEvenement=tab.newTabSpec("Evenement");
    		TabSpec ongletActualites=tab.newTabSpec("Actualités");
    		TabSpec ongletBureau=tab.newTabSpec("Bureau");
     
    		ongletAccueil.setIndicator(getString(R.string.Accueil));
    		ongletEvenement.setIndicator(getString(R.string.Evenement));
    		ongletActualites.setIndicator(getString(R.string.Actualites));
    		ongletBureau.setIndicator(getString(R.string.Bureau));
     
    		tab.addTab(tab.newTabSpec("Tab")
                    .setIndicator("Tab")
                    .setContent(new Intent(this, ActiviteGroup.class)
                     .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));		
    	//	ongletAccueil.setContent(new Intent(this, ActiviteGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    		ongletEvenement.setContent(R.id.tab2);
    		ongletActualites.setContent(R.id.tab3);
    		ongletBureau.setContent(R.id.tab4);
     
     
    	    //tab.addTab(ongletAccueil);
    	    //tab.addTab(ongletEvenement);
    	    //tab.addTab(ongletActualites);
    	   // tab.addTab(ongletBureau);
     
           /* LinearLayout cibleLayout = (LinearLayout)findViewById(R.id.tab1);
            View view = getLayoutInflater().inflate(R.layout.list, cibleLayout,false);
            cibleLayout.addView(view);
    */
     
    	}
    }
    ActiviteGroup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package com.example.tabtest;
     
    import android.app.ActivityGroup;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
     
    class ActiviteGroup extends ActivityGroup{
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
     
          //you van get the local activitymanager to start the new activity
     
          View view = getLocalActivityManager()
                                    .startActivity("ReferenceName", new
          Intent(this,AndroidRssReader.class)
                                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                                    .getDecorView();
           this.setContentView(view);
     
       }
    }
    AndroidRssReader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    package com.example.tabtest;
     
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.List;
     
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
     
    import android.app.ListActivity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TabHost;
    import android.widget.TabHost.TabSpec;
    import android.widget.TextView;
     
    public class AndroidRssReader extends ListActivity 
    {
     
    	private RSSFeed myRssFeed = null;
     
    	public class MyCustomAdapter extends ArrayAdapter<RSSItem> {
     
    		public MyCustomAdapter(Context context, int textViewResourceId,List<RSSItem> list) 
    		{
    			super(context, textViewResourceId, list);	
    		}
     
    		@Override
    		public View getView(int position, View convertView, ViewGroup parent) {
    			// TODO Auto-generated method stub
    			//return super.getView(position, convertView, parent);
     
    			View row = convertView;
     
    			if(row==null){
    				LayoutInflater inflater=getLayoutInflater();
    				row=inflater.inflate(R.layout.row, parent, false);	
    			}
     
    			TextView listTitle=(TextView)row.findViewById(R.id.titre);
    			listTitle.setText(myRssFeed.getList().get(position).getTitle());
    			TextView listDescription=(TextView)row.findViewById(R.id.description);
    			listDescription.setText(myRssFeed.getList().get(position).getDescription());
     
     
     
    			return row;
    		}
    	}
     
    	public void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.list);
     
    		try {
    			URL rssUrl = new URL("http://www.comptoir-hardware.com/home.xml");
    			SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
    			SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
    			XMLReader myXMLReader = mySAXParser.getXMLReader();
    			RSSHandler myRSSHandler = new RSSHandler();
    			myXMLReader.setContentHandler(myRSSHandler);
    			InputSource myInputSource = new InputSource(rssUrl.openStream());
    			myXMLReader.parse(myInputSource);
    			myRssFeed = myRSSHandler.getFeed();
    		}
     
    		catch (MalformedURLException e) {e.printStackTrace();}
    		catch (ParserConfigurationException e) {e.printStackTrace();}
    		catch (SAXException e) {e.printStackTrace();}
    		catch (IOException e) {e.printStackTrace();}
     
     
    		if (myRssFeed!=null)
    		{
     
    			MyCustomAdapter adapter =new MyCustomAdapter(this, R.layout.row, myRssFeed.getList());
    			setListAdapter(adapter);
     
     
    		}
     
    	}
     
    	protected void onListItemClick(ListView l, View v, int position, long id) 
    	{
    		Intent intent = new Intent(this,ShowDetails.class);
    		Bundle bundle = new Bundle();
    		bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle());
    		bundle.putString("keyDescription", myRssFeed.getItem(position).getDescription());
    		bundle.putString("keyLink", myRssFeed.getItem(position).getLink());
    		bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate());
    		intent.putExtras(bundle);
    		startActivity(intent);
    	}
     
    	public RSSFeed getRssFeed()
    	{
    		return this.myRssFeed;
    	}
     
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Problème résolu ma classe main heritait de Activity au lieu de TabActivity ...
    J'avais vraiment mal compris les tabs ce tuto ma bien aidé : http://www.ace-art.fr/wordpress/2010...1-les-tabhost/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] rechercher des valeurs dans des onglets suivant liste
    Par spico45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2009, 17h44
  2. [WD-2007] Liste active d'un répertoire dans un fichier word
    Par Saratum dans le forum Word
    Réponses: 1
    Dernier message: 01/04/2009, 22h47
  3. Récuperer la valeur d'une liste modifiable créée dans un onglet excel
    Par dimitrios dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2007, 12h34
  4. Réponses: 0
    Dernier message: 10/10/2007, 17h40
  5. Recuperer Nom fichier dans zone de liste active
    Par yoda1000 dans le forum Access
    Réponses: 2
    Dernier message: 05/05/2006, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo