Aller au contenu

[Bug] Switch entre 2 Views


Fluckysan

Recommended Posts

Bonjour :D

Je me suis mis à dév une chtite appli toute simple pour apprendre sur le SDK Androïd

Mais je bute sur un truc super simple : le switch entre 2 Views

Voici le code de la première View :

Le XML :

<?xml version="1.0" encoding="utf-8"?>
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_weight="1">
                   android:id="@id/android:list"
                   android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:background="#00FF00"
                   android:layout_weight="1"
                   android:drawSelectorOnTop="false">



       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_weight="1">

       android:text="row one"
       android:textSize="15pt"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_weight="1"/>


Et le Java :

package com.fnorindr.android.pii;

import android.app.ListActivity;
import android.widget.ArrayAdapter;
import android.os.Bundle;
import android.util.Log;
import android.view.*;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.view.View.OnClickListener;

public class entry extends ListActivity {
   static final String[] COUNTRIES = new String[] {
       "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra"
     };

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

       setListAdapter(new ArrayAdapter(this,
               android.R.layout.simple_list_item_1, COUNTRIES));
       getListView().setTextFilterEnabled(true);

       setContentView(R.layout.entry);
   }

   public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.menu_bottom, menu);
       return true;
   }

   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
           case R.id.create:
               this.setContentView(R.layout.second);
               return true;
       }

       return false;
   }
}

Voici celui de la seconde View :

Le XML :

<?xml version="1.0" encoding="utf-8"?>
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:text="Yep"/>

Et le Java :

package com.fnorindr.android.pii;

import android.os.Bundle;
import android.view.*;
import android.app.Activity;

public class second extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       setContentView(R.layout.second);
   }

   public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.menu_bottom, menu);
       return true;
   }

   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
           case R.id.create:
                   this.setContentView(R.layout.entry);
               return true;
       }

       return false;
   }
}

Rien de plus simple !

Et pourtant ça bug lorsque je click sur le menu "Create" ...

Il y a un truc que j'ai pô du comprendre mais je ne vois pô quoi !

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai trouvé la solution :o

Et j'avais en effet mal compris !

Je laisse le Topic et je corrige parce que même si j'ai un peu honte de la faute, ça permettra à tous les débutants de pô faire comme moip :p

Donc faites attention à ne pô confondre View et Activity (et de ne pô trop vous fier au tuto qui traîne sur le net ...)

Il ne faut en fait pô changer le layout si on veut changer d'Activity donc ces lignes sont fausses :

            case R.id.create:
               this.setContentView(R.layout.second);
           return true;

Il faut commencer par inclure la 2ème Activity dans le AndroidManifex.xml :

                          android:label="@string/app_name">

Ensuite il suffit d'appeler la 2ème Activity par un Intent (Je ne sais pô s'il existe une autre façon de faire :s) :

            case R.id.create:
               Intent goIntent = new Intent(this, second.class);
               this.startActivity(goIntent);
           return true;

Vous pouvez donc appeler l'Activity que vous voulez de cette façon :)

Je continuerais de vous faire part de mes erreurs dès que je bloque, ne vous inquiétez pô XD

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...