Aller au contenu

Petit coup de pouce pour les Intents s'il vous plait ;)


DevAndroid

Recommended Posts

Bonjour,

J'ai une premiere Activity dans laquelle il ya un bouton. Je voudrais que quand je click sur ce bouton , un bouton se creer dans une seconde Activity.

Voila le code de cette premiere Activity :

public class main extends Activity {
   /** Called when the activity is first created. */

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       ((Button)findViewById(R.id.monBouton)).setOnClickListener(
               new OnClickListener(){

                   public void onClick(View v ){
                   Intent intent = new Intent (main.this, second.class);
                   startActivity(intent);
                   }
               });

Est il possible de rajouter du code afin que quand je click sur le bouton, un bouton se creer dans "second.class" et bien sur que je tombe sur celle ci??

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas bien compris, tu veux que ton second bouton soit présent dans ta seconde activity seulement si tu viens du main?

Je pense ne pas avoir bien saison ton problème, donc il se peut que je réponde à côté de la plaque.

pour ma part, si la différence est seulement un bouton qui est présent/absent dans la seconde classe, je mets le layout avec le bouton

setContentView(R.layout.second);

et la visibility du bouton à GONE suivant la valeur recue:

                Bundle bundle = new Bundle();            
               bundle.putBoolean("displayButton", true);//ou false
               Intent mIntent = new Intent(main.this, second.class);
               mIntent.putExtras(bundle);
               startActivity(mIntent);

et n'oublie pas de mettre des majuscules à tes classes... Ca fonctionnera quand même, mais ca donnera pas de boutons aux puristes

Lien vers le commentaire
Partager sur d’autres sites

Pour que tu comprenne je vais renommer les class:

la class main : main.class sapelle maintenant newgame.class

la class second : second.class sapelle maintenant profils.class

La "second.class" est vierge au debut, quand je vais dans mon menu et que je fais newgame, il ya un bouton, ce bouton me permet de creer des profils, quand je click sur le bouton de newgame, celui ci va creer un profil dans la class profils sous forme de bouton.

Jespere que tu as compris desoler pour les repetition.

Lien vers le commentaire
Partager sur d’autres sites

bon réponse à ses questions:

1) ton code semble correct.. Tu me confirmes donc que pour l'instant ton code fonctionne et lance la seconde activity?

2) tu te plainds de quoi? Il serait bien d'expliquer le comportement exact de ton appli et ou ca bloque! Je suppose que quand tu appuyes sur le bouton, ca lance la seconde activité et que tu as un écran noir, c'est cela?

si j'ai bien cerné le soucis, il te suffit de créer ta classe second, exactement comme la première avec un second fichier de layout ( second.xml)

Décris bien ou cela bloque!

Lien vers le commentaire
Partager sur d’autres sites

Ok Ok,

1) oui mon code lance bien ma second activity et il fonctionne.

2) oui quand jappui sur le bouton, ca lance la seconde activité et j'ai un écran noir.

Ya rien qui bloque

explication : etape 1: je click sur le bouton de la premiere activity

etape 2: cela m'affiche la seconde activity (ecran noir)

ce que j'aimerais : etape 1: je click sur le bouton de la premiere activity

etape 2: cela me creer un bouton dans la seconde activity

etape 3: cela m'affiche la seconde activity avec le bouton creer de l'etape 2

Je veux que le bouton se creer tout seul sans que je definisse de XML avant dans la seconde activity.

Lien vers le commentaire
Partager sur d’autres sites

Désolé pour les questions, j'ai peut-être fait le lourdingue mais j'ai maintenant tout compris et tout est clair!

Voici un exemple de code pour créer un layout par code:

linear = new LinearLayout(this);
linear.setOrientation(LinearLayout.VERTICAL);
text = new TextView(this);
text.setText("Un texte qui se crée par code et pas par xml");
linear.addView(text);
setContentView(linear);

Normalement tu ne devrais pas avoir de soucis pour en faire un bouton en l'adaptant et rajouter le click listener

Lien vers le commentaire
Partager sur d’autres sites

Plus d'infos ici

http://developerlife.com/tutorials/?p=289

  // login button
 final Button btnProfil = new Button(this);
 btnProfil.setText("Creer un profil");
 btnProfil.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
 btnProfil.setGravity(Gravity.CENTER);
 btnProfil.setOnClickListener(new View.OnClickListener() {
   public void onClick(View view) {
     //fais ce qu'il te plait.
     Log.i(getClass().getSimpleName(), "button was pressed");
   }
 });

et à la fin:

linear.addView(btnProfil);

Lien vers le commentaire
Partager sur d’autres sites

ok, quand tu as dit que tu connais, j'ai cru que tu comprenais.... :D

Pour le Log.i, ne te tracasses pas avec cela, ce n'est rien, c'est juste un message qui s'affichera dans le débuggueur ( LogCat).

Efface cette ligne et mets le code que tu veux que le bouton exécute

Bon on est d'accord que ton activity 1 fonctionne, qu'elle appelle la 2 avec un bel écran noir. Donc rien à changer dans le main, c'est l'autre activity qui ne "fait" rien

Premiere étape: fais un simple copier coller de ton activity main dans l'activity 2, tu verras que ca devrait fonctionner!

Etape 2: Si ca fonctionne, il faut adapter l'activity 2

Normalement ton activity 2 serait un truc du genre:

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

si tu crées un fichier profil.xml avec un bouton, tout devrait fonctionner sans soucis.

Mais toi, tu veux pas de fichier xml, tu veux du code, ce qui pour moi coomplique l'histoire.. tu dois donc faire ton activity 2 comme ceci:

public class Profil extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

linear = new LinearLayout(this);
linear.setOrientation(LinearLayout.VERTICAL);

 // login button
 final Button btnProfil = new Button(this);
 btnProfil.setText("Creer un profil");
 btnProfil.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
 btnProfil.setGravity(Gravity.CENTER);
 btnProfil.setOnClickListener(new View.OnClickListener() {
   public void onClick(View view) {
     //fais ce qu'il te plait.
     Log.i(getClass().getSimpleName(), "button was pressed");
   }
 });

linear.addView(btnProfil);

       setContentView(linear);

Lien vers le commentaire
Partager sur d’autres sites

AieAieAie :D

Je t'es encore pas assez bien expliquer mais bon je pense que ce que je demande est impossible.

Je veux rien ecrire dans la seconde activity,

je mettre le code que tu a ecris dans la premiere activity

afin que se sois le click du bouton de la premiere activity

qui "creer" le bouton dans la seconde activity.

Lien vers le commentaire
Partager sur d’autres sites

Ok, je laisse tomber alors, ca me semble un peu bizarre comme idée, je ne connais pas tes contraintes, le but n'est pas de créer un débat là dessus, mais je vois pas ce qui pose probleme à créer un fichier en plus...

Tu parles toi-même d'un fichier "second.class" dans le premier post, pourquoi ne vouloir rien écrire là dedans.

Je laisse donc les autres répondre car je vois pas du tout comment faire...

Lien vers le commentaire
Partager sur d’autres sites

Je veux rien ecrire dans la seconde activity,

je mettre le code que tu a ecris dans la premiere activity

afin que se sois le click du bouton de la premiere activity

qui "creer" le bouton dans la seconde activity.

Tu veux que le bouton dans la seconde activity ne soit visible seulement si on à préalablement clické sur le bouton de la première activity?

si c'est ça , tu as plusieur façon de le faire , si tu veux que ce soit persistant (reste même lorsque l'on quitte l'application) , le plus simple et propre serait d'utiliser SharedPreferences je pense.

Sinon si c'est juste pour l'instance de l'application en cours , une simple boolean static qui change en clickant sur le bouton et que l'activity 2 check en s'ouvrant devrait être suffisante.

Lien vers le commentaire
Partager sur d’autres sites

si tu n'as jamais utilisé les SharedPrereferences je te conseille de lire la doc http://developer.android.com/guide/topics/data/data-storage.html#pref pour commencer

sinon , tu met un event onclick sur ton bouton de l'activité 1 , qui change une valeur dans SharedPreference (boolean si suffisant sinon int) , et dans le onCreate , tu check la value de SharedPreference et affiche le bouton si c'est la bonne valeur

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...