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 :

Un FragmentLayout like sous android 2.2


Sujet :

Android

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Un FragmentLayout like sous android 2.2
    Bonjour à tous,

    Je suis débutant sous android et j'essais de réaliser un tabhost avec les onglets verticaux à gauche de l'écran. quand notre écran est en landscape.
    Je suis sous le SDK 2.2, 2.3 maximum. Bien sur je ne peux pas utiliser le SDK 3 et utiliser les FragmentLayout, mais je voudrais faire la même chose sur un SDK 2.2.

    Avez vous une (ou des) idées?
    J'ai déjà pas mal cherché sur internet. Je ne trouve pas de solution Et j'aimerais ne pas me faire tout le composant à la main...
    Je sais déjà que l'orientation vertical pour le tabHost ne fonctionne pas.

    Merci d'avance pour votre temps et votre aide.

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour ,

    Je ne sais pas si ça marche mais essaye de bloquer la rotation en landscape de ta TabHost , normalement les onglets resteront sur le côté , après je ne sais pas si il faut faire quelque chose pour prévenir les filles , ou s'il le fait tout seul . En tout cas cela reste une idée .
    Pour bloquer l'application dans ton cas , je passerais par la procédure onConfigurationChanged directement dans l'application .
    Tu peux toujours essayer directement dans le manifest .

    Bon courage .

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Tout d'abord merci de ta réponse rapide,

    Ensuite je n'ai pas encore mis en place ta solution mais quelque chose m'intrigue. Actuellement (ou je peux être soit en landscape soit en portrait) avec mon TabHost même si je suis en landscape mes onglet sont en haut. Donc je ne comprend pas pourquoi le fait de la bloquer en landscape pourrais changer quelque chose à mon problème.

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Hmm , pas facile à expliquer , il faudrait que tu le vois directement sur ton téléphone .

    En gros si tu bloques la rotation de ton activity le layout ne tournera pas alors que le téléphone si . Du coup les onglets du layout se retrouveront sur le côté et non plus en haut.

    Après ça reste de la bidouille mais le concept doit marcher .

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Encore merci pour ces explications claires,

    J'ai essayé ta solution. Malheureusement je n'ai pas réussi à la mettre en pratique. Même si j'ai compris le concept. Voici l'extrait de mon fichier manifest que j'ai modifié:
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    	package="com.ihm" android:versionCode="1" android:versionName="1.0">
    	<uses-sdk android:minSdkVersion="8" />
    	<!--
    		<supports-screens android:smallScreens="true"
    		android:normalScreens="true" android:largeScreens="true"
    		android:xlargeScreens="true" android:anyDensity="true" />
    	-->
    	<application android:icon="@drawable/icon" android:label="@string/app_name">
    		<activity android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"
    			android:name="SelectServer">
    			<intent-filter>
    				<action android:name="android.intent.action.MAIN" />
    				<category android:name="android.intent.category.LAUNCHER" />
    			</intent-filter>
    		</activity>
    		<activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name="TabMain"
    			android:screenOrientation="portrait">
    		</activity>
    		<activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name="GroupActivity"
    			android:screenOrientation="landscape">
    		</activity>
    		<activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name=".music.Albums"
    			android:screenOrientation="landscape">
    Je pense que vous le comprendrez tous relativement simplement. J'ai une activité principale SelectServer qui lance l'activité TabMain (qui contient et construit mon tabHost) chaque onglet contient un groupe d'activité GroupActivity.J'ai essayé avec l'activité Albums.
    Maintenant comme Feanorin me l'a dit mes onglets sont sur le côté. Déjà ça c'est bien. Par contre les filles (les activités dans les onglets) sont également bloqué en portrait. Malgré que j'ai mis orientation landscape... Je comprend pas pourquoi. Et je vois pas comment faire.
    Je ne pourrais pas essayer les solutions que vous me proposez dans le week end car je n'aurais pas mon pc de boulot sous la main. Mais je pourrais vous répondre et lire attentivement vos réponses. J'essaierais les solutions dès lundi sans fautes.
    Encore merci à tous pour l'intéret que vous porterais (ou que vous avez déjà porté) à mon problème.

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Re,

    Pour bloquer l'application dans ton cas , je passerais par la procédure onConfigurationChanged directement dans l'application .
    Essaye comme cela , peut être tu auras moyen de prévenir les filles du changement via ton menbre tabhost de ta class principale . lien

    Regarde aussi en mettant cette procédure dans les classes filles pour savoir si tu y passes .

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Ok je regarde ça dès lundi matin.
    Merci beaucoup.

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Je ne comprend pas je ne rentre jamais dans mes méthodes onConfigurationChanged.
    Voilà ce que j'ai ajouté dans la classe où je créé mes mon 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
     
    public class TabMain extends TabActivity implements ComponentCallbacks{
    	private static TabHost tabHost;
    	private TabSpec tabSpec;
    	private List<IntentTabsCreate> listIntent;
     
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.tab_host);
    		tabHost = getTabHost();
    		listIntent = new ArrayList<IntentTabsCreate>();
    		longBuild();
    		buildTabSpec();
    	}
    public void onConfigurationChanged(Configuration newConfig) {
    		Log.d("Classe creatrice du tabHost", "Changement de configuration");
    	}
    Dans les classes filles:

    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
     
    public class GroupActivity extends ActivityGroup implements ComponentCallbacks{
     
    	public static GroupActivity group;
    	private ArrayList<View> history;
    	private String name;
    	private Intent intent;
     
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		this.history = new ArrayList<View>();
    		group = this;
    		name = (String) getIntent().getExtras().get("Name");
    		if(name.equals("Albums"))
    			intent = new Intent(this, Albums.class);
    		else if(name.equals("Pictures"))
    			intent = new Intent(this, Pictures.class);
    		else{
    			Log.e("Create groupActivity", "Name unreadable : "+name);
    		}
    		replaceView(intent, name);
    	}
    public void onConfigurationChanged(Configuration newConfig) {
    		Log.d("TabSpec fille", "Configuration change");
    	}
    Après avoir cherché un peu sur internet j'ai mis ça dans mon manifest:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name="TabMain"
    			android:configChanges="orientation|keyboardHidden">
    		</activity>
    		<activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name="GroupActivity"
    			android:configChanges="orientation|keyboardHidden">
    		</activity>
    		<activity android:theme="@android:style/Theme.NoTitleBar"
    			android:label="@string/app_name" android:name=".music.Albums"
    			android:configChanges="orientation|keyboardHidden">
    		</activity>
    Mais je dois reconnaitre que je ne sais pas à quoi ça sert vraiment!!

  9. #9
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Mais je dois reconnaitre que je ne sais pas à quoi ça sert vraiment!!
    Ca sert à prévenir l'activity quand elle doit te remonter l'information d'un changement d'orientation via la procédure onConfigurationChanged

    Après je ne sais pas si ça pourra t'aider , mais la rotation sous l'emulateur doit se faire via un Crtl+Down et non la touche '9'.

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Après je ne sais pas si ça pourra t'aider , mais la rotation sous l'emulateur doit se faire via un Crtl+Down et non la touche '9'.
    Oui je suis content de la savoir! Mais dans mon cas le problème ne vient pas de là puisque je teste directement sur une device. De plus dans les log cat on voit bien que la rotation à eu lieu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    02-14 10:08:10.893: INFO/WindowManager(98): Setting rotation to 0, animFlags=1
    02-14 10:08:10.913: INFO/ActivityManager(98): Config changed: { scale=1.0 imsi=208/10 loc=fr_FR touch=3 keys=1/1/2 nav=3/1 orien=1 layout=17 uiMode=17 seq=99}
    Ca sert à prévenir l'activity quand elle doit te remonter l'information d'un changement d'orientation via la procédure onConfigurationChanged
    Ok donc déjà ça il faut bien que j'y mette dans mon manifest! C'est un bon début!!

  11. #11
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Hmm , on dirait que onConfigurationChanged n'est pas disponible pour le TableActivity , mais plutôt getChangingConfigurations ( au temps pour moi ).

    http://developer.android.com/referen...urations%28%29

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    02-14 11:11:02.394: INFO/HtcAlertDialog(4561): onOrientationChanged: rotate from L to P = + Orientaion = 2
    02-14 11:11:03.063: INFO/HtcAlertDialog(4561): onOrientationChanged: rotate from P to L = + Orientaion = 1
    Mmmh bizar je rentre toujours pas dedans. J'ai ajouté un point de débug que je ne traverse jamais. Peut être que j'ai pas compris exactement ce que je devait faire. Ducoup voilà ce qu'il y a dans ma classe qui étend Tabactivity:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public int getChangingConfigurations() {
    		int j = 0; // J'ai mis le breakpoint ici.... Mais je m'arrête jamais.
    		while (tabHost.getChildAt(j) != null) {
    			View v = tabHost.getChildAt(j);
    			LinearLayout layout = new LinearLayout(v.getContext());
    			layout.setOrientation(LinearLayout.VERTICAL);
    			v.setLayoutParams(layout.getLayoutParams());
    			j++;
    		}
    		return 1;
    ( au temps pour moi )
    C'est déjà bien gentils de ta part de m'aider. Je suis désolé je m'y connais pas assez en développement Android pour trouver ce genre d'erreur tout seul...

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Bon ben finalement on change nos composants. Donc on n'a pas trouvé de solution au problème mais on va contourner le problème. Ce problème n'est pas résolu.

  14. #14
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour, j'ai pris un peu de temps pour tester sur une application.

    Alors en premier lieu getChangingConfigurations ne marche pas pour moi .

    Par contre onConfigurationChanged fonctionne à merveille pour la TabActivity ainsi que pour la fille active . les autres filles ne sont pas concerné par la rotation donc ne reçoivent pas la notification , ce qui paraît logique en somme .

Discussions similaires

  1. Nokia prépare un netbook sous Android
    Par Kerod dans le forum Mobiles
    Réponses: 3
    Dernier message: 01/07/2009, 09h53
  2. Nokia prépare un netbook sous Android
    Par Kerod dans le forum Actualités
    Réponses: 0
    Dernier message: 30/06/2009, 15h56
  3. Nokia prépare un netbook sous Android
    Par Kerod dans le forum Android
    Réponses: 0
    Dernier message: 30/06/2009, 15h56
  4. La 2D sous Android
    Par Julien Bodin dans le forum Android
    Réponses: 7
    Dernier message: 18/03/2009, 21h04
  5. Fonction VB "LIKE" sous VBScript ?
    Par chrish71 dans le forum VBScript
    Réponses: 7
    Dernier message: 04/03/2009, 21h39

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