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

Composants graphiques Android Discussion :

Lancer une Activity à l'aide d'un bouton qui se trouve dans un FragmentActivity


Sujet :

Composants graphiques Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut Lancer une Activity à l'aide d'un bouton qui se trouve dans un FragmentActivity
    Bonjour,

    Suite à plusieurs solutions trouver sur internet (qui ne marche pas ou que je n'arrive pas à mettre en fonctionnement),
    je poste mon problème sur le forum.

    Je souhaite:

    Lancer une activity indépendante de mon activity principal a l'aide d'un bouton

    Mon Programme est fait de la manière suivante:

    Mon activity principal ce trouve être une activity qui hérite de fragmentActivity,
    dans un de mes fragments ce trouve mon bouton.
    J'aimerais qu'une autre activity qui ce trouve dans le même projet mais qui n'est pas un fragment de mon activity principal puisse être lancée sans pour autant fermé l'acitivity principal.

    voila si vous pouvez m'aidais à résoudre ce problème je vous en remercie d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Une nouvelle activité remplace toujours l'activité en cours...

    L'activité initiale reste dans la pile de toute manière (un back permet d'y revenir). Ce comportement par défaut peut être modifié par le manifest.

    Si Android a besoin de mémoire, il se peut que l'activité initiale soit "fermée" (temporairement) et recréée (automatiquement) dès qu'on "retourne" sur celle-ci.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Je pense pas que mon activity principal prend trop d'espace mémoire lors de son exécution mais dans un premier temps j'aimerais résoudre mon problème de code qui ce trouve dans la méthode du bouton.

    Avec le code suivant l'application ce lance bien mais dès qu'on vient cliquer sur le bouton le programme plante.

    voici le code de mon activity principal.
    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
     
    public class FragmentsSliderActivity extends FragmentActivity 
    {
     
    	private PagerAdapter mPagerAdapter;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState); // permet d'afficher l'activity
    		super.setContentView(R.layout.viewpager); // permet d'afficher le fragement dans l'activity
    		// Création de la liste de Fragments que fera défiler le PagerAdapter
    		List<Fragment> fragments = new Vector<Fragment>();
     
    		// Ajout des Fragments dans la liste
    		fragments.add(Fragment.instantiate(this,PageGaucheFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageGaucheBis.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageMilieuFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageMilieuBis.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageDroiteFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageDroiteBis.class.getName()));
     
    		// Création de l'adapter qui s'occupera de l'affichage de la liste de
    		// Fragments
    		this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
     
    		ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
    		// Affectation de l'adapter au ViewPager
    		pager.setAdapter(this.mPagerAdapter);
     
    		}	
    	public void Defautcapteur(View v)
    	{
     
    		Intent intent1 = new Intent(FragmentsSliderActivity.this,Defaut_Capteur.class);
    		startActivity(intent1);
    	}
    la méthode Defautcapteur est appelé lorsqu'on clique sur le bouton

    voici le code xml du bouton ce trouve dans un fragment
    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
     
     <LinearLayout
             	android:layout_width="fill_parent"
    	    	android:layout_height="wrap_content"
    		android:layout_marginLeft="100dp"
    	        android:layout_marginRight="100dp"
    		android:layout_gravity="center_vertical"
    		android:minHeight="80dp"
    		android:gravity="center"
    		android:background="#ec0000"
    		android:orientation="vertical">
                	<Button 
                	     android:id="@+id/BtnDefautCapteur"
                	     android:onClick="Defautcapteur"
    		     android:layout_width="fill_parent"
    		     android:layout_height="70dp"
    		     android:layout_marginLeft="20dp"
    		     android:layout_marginRight="20dp"
    		     android:layout_gravity="center"
    		     android:textStyle="bold"
    		     android:text="Defaut Capteur"/>
    		</LinearLayout>
    Et voici le code java de mon application que je souhaite lancée a l'aide mon bouton
    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 Defaut_Capteur extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_defaut__capteur);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.activity_defaut__capteur, menu);
    		return true;
    	}
     
    }
    Merci d'avance pour tout l'aide que vous pourrez m'apporter

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Si l'application "plante", une exception a été écrite dans le logcat... c'est le contenu total de cette exception qui nous interesse...

    Sinon, de loin, rien à dire... activité correctement déclarée dans le manifest ?


    P.S. Les noms de methodes / variables / membres commencent en Java par une minuscule et sont "CamelCase": Defautcapteur devrait donc s'appeler "defautCapteur"... Les identifiants commencant par une majuscules sont reservés aux types (classes, interfaces, enums), et constantes (final static). Le "_" est 'interdit' ... donc la classe Defaut_Capteur devrait se nommer "DefautCapteur". Bien sur ce sont des règles arbitraires, mais qui aident grandement à la relecture de code.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Voici le logcat
    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
     
    02-07 09:26:04.824: D/gralloc_goldfish(1366): Emulator without GPU emulation detected.
    02-07 09:26:43.504: D/AndroidRuntime(1366): Shutting down VM
    02-07 09:26:43.504: W/dalvikvm(1366): threadid=1: thread exiting with uncaught exception (group=0xb6199180)
    02-07 09:26:43.544: E/AndroidRuntime(1366): FATAL EXCEPTION: main
    02-07 09:26:43.544: E/AndroidRuntime(1366): java.lang.RuntimeException: Unable to pause activity {com.tutos/com.tutos.FragmentsSliderActivity}: java.lang.NullPointerException
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2706)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2662)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2640)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.access$800(ActivityThread.java:123)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1154)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.os.Looper.loop(Looper.java:137)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at dalvik.system.NativeStart.main(Native Method)
    02-07 09:26:43.544: E/AndroidRuntime(1366): Caused by: java.lang.NullPointerException
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at com.tutos.FragmentsSliderActivity.onSaveInstanceState(FragmentsSliderActivity.java:82)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.Activity.performSaveInstanceState(Activity.java:1113)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1185)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2688)
    02-07 09:26:43.544: E/AndroidRuntime(1366): 	... 12 more
    02-07 09:26:46.945: I/dalvikvm(1366): threadid=3: reacting to signal 3
    02-07 09:26:46.955: I/dalvikvm(1366): Wrote stack traces to '/data/anr/traces.txt'

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il n'y aurait pas un fragment vide ?

    On dirait qu'il n'arrive pas à sauvegarde l'état des views d'un fragment.
    com.tutos.FragmentsSliderActivity c'est quoi ?
    On peut voir la classe ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    j'ai 6 fragments en tout qui sont créés dans le FragmentsSliderActivity.
    chaque fragment contient des textview , linearlayout, etc

    com.tutos.FragmentsSliderActivity
    je pense que c'est lié à l'arborescence de mon projet.
    http://www.hostingpics.net/viewer.ph...108Capture.png

    voici le code contenu dans ma classe FragmentSliderActivity

    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
     
    package com.tutos;
     
    import java.util.List;
    import java.util.Vector;
     
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;
     
     
    public class FragmentsSliderActivity extends FragmentActivity 
    {
     
    	private PagerAdapter mPagerAdapter;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState); // permet d'afficher l'activity
    		super.setContentView(R.layout.viewpager); // permet d'afficher le fragement dans l'activity
    		// Création de la liste de Fragments que fera défiler le PagerAdapter
    		List<Fragment> fragments = new Vector<Fragment>();
     
    		// Ajout des Fragments dans la liste
    		fragments.add(Fragment.instantiate(this,PageGaucheFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageGaucheBis.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageMilieuFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageMilieuBis.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageDroiteFragment.class.getName()));
    		fragments.add(Fragment.instantiate(this,PageDroiteBis.class.getName()));
     
    		// Création de l'adapter qui s'occupera de l'affichage de la liste de
    		// Fragments
    		this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
     
    		ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
    		// Affectation de l'adapter au ViewPager
    		pager.setAdapter(this.mPagerAdapter);
     
    		}	
    	public void defautCapteur(View v)
    	{
     
    		Intent intent1 = new Intent(FragmentsSliderActivity.this,Defaut_Capteur.class);
    		startActivity(intent1);
    	}
     
    	@Override
    	public void onResume()
    	{
    	    super.onResume();
    	    // your stuff or nothing
    	}
     
    	@Override
    	public void onPause()
    	{
    	    super.onPause();
    	    // your stuff or nothing
    	}
     
    	@Override
    	public void onSaveInstanceState(Bundle savedInstanceState) 
    	{
    	    super.onSaveInstanceState(savedInstanceState);
    	    // your stuff or nothing
    	}
     
    	@Override
    	public void onRestoreInstanceState(Bundle savedInstanceState) 
    	{
    	    super.onRestoreInstanceState(savedInstanceState);
    	    // your stuff or nothing
    	}
     
     
    }

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Je rajoute a la suite le manifest de mon projet

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.tutos"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk android:minSdkVersion="8" />
     
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name="com.tutos.FragmentsSliderActivity"
                android:configChanges="keyboardHidden|orientation"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.tutos.PageGaucheFragment"
                android:screenOrientation="portrait" />
            <activity
                android:name="com.tutos.PageMilieuFragment"
                android:screenOrientation="portrait" />
            <activity
                android:name="com.tutos.PageDroiteFragment"
                android:screenOrientation="portrait" />
            <activity
                android:name="com.tutos.PageGaucheBis"
                android:label="@string/title_activity_page_gauche_bis" >
            </activity>
            <activity
                android:name="com.tutos.PageDroiteBis"
                android:label="@string/title_activity_page_droite_bis" >
            </activity>
            <activity
                android:name="com.tutos.PageMilieuBis"
                android:label="@string/title_activity_page_milieu_bis" >
            </activity>
            <activity
                android:name="com.tutos.Defaut_Capteur"
                android:label="@string/title_activity_defaut__capteur" >
            </activity>
        </application>
     
    </manifest>
    Cela peut permettre de mieux comprendre "com.tutos.FragmentsSliderActivity"

  9. #9
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Bon... alors là je ne sais pas....

    A part le manifest... les fragments sont déclarés comme des activités, ce qui n'est pas le cas, ils n'ont pas a être déclarés dans le manifest.

    Eventuellement le Fragment.instantiate() ... que je n'ai jamais utilisé (je préfère un simple new)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       fragments.add(new PageGaucheFragment());
       ...
    Ou encore le PagerAdapter utilisé (pourquoi ne pas utiliser un FragmentPagerAdapter ?, en quoi le MyPagerAdapter diffère-t-il ?)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Comme je suis novice en programmation androïde j'ai du mal à savoir quel est le problème et comment le résoudre lorsqu'il y en a un.


    si je comprend bien il faudrait que je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fragments.add(Fragment.instantiate(this,PageGaucheFragment.class.getName()));
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fragments.add(new PageGaucheFragment());
    Faut-il que je change quelque chose dans mes fragments (au niveau du code), et au niveau du manifest?

    voici le code de myPagerAdapter
    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
     
    package com.tutos;
     
    import java.util.List;
     
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
     
    public class MyPagerAdapter extends FragmentPagerAdapter 
    {
     
    	private final List<Fragment> fragments;
     
    	//On fournit à l'adapter la liste des fragments à afficher
    	public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) 
    	{
    		super(fm);
    		this.fragments = fragments;
    	}
     
    	@Override
    	public Fragment getItem(int position) 
    	{
    		return this.fragments.get(position);
    	}
     
    	@Override
    	public int getCount() 
    	{
    		return this.fragments.size();
    	}
    }
    MyPagerAdapter hérite bien de fragmentPagerAdapter

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    j'ai passer tout mes fragment sous la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fragments.add(new PageGaucheFragment());
    fragments.add(new PageDroiteFragment());
    etc.
    Le programme ce lance donc aucune modification
    mais programme plante lorsque je clique sur le bouton qui est situé dans un des fragment

    voici la méthode en question qui est placé dans FragmentsSliderActivity.class:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void defautcapteur(View v)
    	{
    		Intent intant1 =new Intent(FragmentsSliderActivity.this,Defaut_Capteur.class);
    		startActivity(intant1);
    	}
    Faut-il que je modifie quelque chose dans cette méthode
    Mettre le FragmentsSliderActivity en Pause ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    j'ai passer tout mes fragment sous la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fragments.add(new PageGaucheFragment());
    fragments.add(new PageDroiteFragment());
    etc.
    Le programme ce lance donc aucune modification
    mais programme plante lorsque je clique sur le bouton qui est situé dans un des fragment

    voici la méthode en question qui est placé dans FragmentsSliderActivity.class:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void defautcapteur(View v)
    	{
    		Intent intant1 =new Intent(FragmentsSliderActivity.this,Defaut_Capteur.class);
    		startActivity(intant1);
    	}
    Faut-il que je modifie quelque chose dans cette méthode
    Mettre le FragmentsSliderActivity en Pause ?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    J'ai résolu mon problème de cette manière.

    Java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void capteurDefaut(View v)
    	{
    		CODE_DE_MON_ACTIVITE=1;
    		affichageDefautCapteur=0;
    		Bundle objetbunble = new Bundle();
    		objetbunble.putStringArrayList("donneesErrone", arrListDefautCapteur);
    		Intent intent = new Intent(AvionSolaire.this, Defaut_Capteur.class);
    		intent.putExtras(objetbunble);
    		startActivityForResult(intent, CODE_DE_MON_ACTIVITE);
    	}
    J'ai pas toucher au fichier xml
    le bouton a toujours l'attribut suivant.

    xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    android:onClick="Defautcapteur"

  14. #14
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    L'attribut onClick sépcifie la fonction qui doit être appelée quand un clic est reçu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:onClick="capteurDefaut"
    (attention à la case !)

    revient à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    findViewById(R.id.xxxxxx).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
               MyActivity.this.capteurDefaut(v); // le nom est un simple copié/collé de la valeur de l'attribut.
            }
    }
    Hélas, je pense que ce code *ne marche pas* à l'intérieur d'un fragment (à vérifier tout du moins), puisque lors de l'instanciation des views, l'inflater n'a pas de pointeur sur le fragment.

    Essayer de faire le code à la main dans le onCreateView() du fragment.

    Ensuite, à chaque fois que tu postes ici un message du genre "Mon appli crash quand je fait tsoin tsoin", cela veut dire qu'il y a un message dans le logcat avec une exception, et surtout une stacktrace. Systématiquement copier l'ensemble de cette exception + stacktrace t'aidera à trouver le problème (et nous aussi d'ailleurs).

    Ensuite pour l'intent, tu peux éviter l'instanciation du bundle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Intent intent = new Intent(AvionSolaire.this, Defaut_Capteur.class);
    intent.putExtra("donneesErrone", arrListDefautCapteur);
    startActivityForResult(intent, CODE_DE_MON_ACTIVITE);
    attention CODE_DE_MON_ACTIVITE doit être STATIQUE (donc en dehors du code), et représente l'appel à l'activité, et non l'activité initiale elle même. Ce qui permet de recevoir le résultat de l'activité "Defaut_Capteur" dans le onActivityResult().
    D'autre part, le caractère "_" est à bannir des noms de classe/fonction (règle Java).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. Lancer une activity via un SlidingDrawer
    Par jmi-android dans le forum Android
    Réponses: 2
    Dernier message: 22/10/2010, 15h35
  2. Editer une table à l'aide d'un bouton :probléme
    Par HadJack dans le forum Débuter
    Réponses: 1
    Dernier message: 24/08/2009, 22h05
  3. faire une pause d'une macro à l'aide d'un bouton
    Par Melanie1324 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2009, 17h53
  4. Réponses: 7
    Dernier message: 23/04/2009, 16h43
  5. Ouvrir une fenêtre à l'aide d'un bouton
    Par coco38 dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 25/04/2008, 15h27

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