51 votes

Android, puis-je utiliser putExtra pour passer plusieurs valeurs ?

Je veux passer deux valeurs à une autre activité. Puis-je le faire avec putExtra ou dois-je le faire d'une manière plus compliquée, ce qui semble être le cas d'après mes lectures. Par exemple, est-ce que quelque chose comme ça peut fonctionner ?

public final static String ID_EXTRA="com.fnesse.beachguide._ID";

Intent i = new Intent(this, CoastList.class);
i.putExtra(ID_EXTRA, "1", "111");
startActivity(i);

Ce qui précède donne une erreur.

Editar

La première chose que j'ai essayé était similaire à :

i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");

mais ID_EXTRA2 semble écrire sur ID_EXTRA1

Donc,

i.putExtra(ID_EXTRA, new String[] { "1", "111"});

On dirait que tout va bien, mais comment extraire les valeurs du tableau dans la deuxième activité, je l'ai utilisé pour une seule valeur.

passedVar = getIntent().getStringExtra(CoastList.ID_EXTRA);

Je suppose que je dois transformer ID_EXTRA en tableau d'une manière ou d'une autre ? ??

155voto

Steve Points 1521

Si vous le souhaitez, vous pouvez passer un "paquet" d'extras plutôt que des extras individuels, par exemple:-.

Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_USERNAME","my_username");
extras.putString("EXTRA_PASSWORD","my_password");
intent.putExtras(extras);
startActivity(intent);

Ensuite, dans l'activité que vous déclenchez, vous pouvez faire référence à ces éléments de la manière suivante :-

Intent intent = getIntent();
Bundle extras = intent.getExtras();
String username_string = extras.getString("EXTRA_USERNAME");
String password_string = extras.getString("EXTRA_PASSWORD");

Ou (si vous préférez) :-

Bundle extras = getIntent().getExtras();
String username_string = extras.getString("EXTRA_USERNAME");
String password_string = extras.getString("EXTRA_PASSWORD");

J'espère que cela vous aidera ! :-)

33voto

Vous pouvez transmettre plusieurs valeurs en utilisant plusieurs clés. Au lieu de

i.putExtra(ID_EXTRA, "1", "111");

faire

i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");

Bien sûr, vous devez définir deux constantes pour les clés et les lire séparément dans la nouvelle activité.

Ou vous pouvez passer un tableau de chaînes de caractères via

i.putExtra(ID_EXTRA, new String[] { "1", "111"});

11voto

Abhi Points 335

Mettre des valeurs supplémentaires en classe

public class MainActivity extends Activity {
        public final static String USERNAME = "com.example.myfirstapp.MESSAGE";
        public final static String EMAIL = "com.example.myfirstapp.EMAIL";

public void registerUser(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText userNameTxt = (EditText) findViewById(R.id.editText1);
        EditText emailTxt = (EditText) findViewById(R.id.editText2);
        String userName = userNameTxt.getText().toString();
        String email = emailTxt.getText().toString();
        intent.putExtra(USERNAME, userName);
        intent.putExtra(EMAIL,email);
        startActivity(intent);

    }

Lecture des valeurs supplémentaires d'une autre classe

public class DisplayMessageActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        String user = intent.getStringExtra(MainActivity.USERNAME);
        String email = intent.getStringExtra(MainActivity.EMAIL);

1voto

gwa Points 3394

Non, vous ne pouvez pas, mais vous pouvez passer un tableau en utilisant :

public Intent putExtra (String name, String[] value)

comme ceci par exemple :

i.putExtra(ID_EXTRA, new String[]{"1", "111"});

1voto

Sander van't Veer Points 3060

Votre exemple ne fonctionnera pas, puisque le Extras sont fabriqués à partir d'un Key et un Value . Vous ne pouvez pas mettre plusieurs Keys y Values en une seule fois Extra

De plus, vos clés doivent être Strings pour autant que je sache (et que j'aie remarqué), mais je peux me tromper sur ce point.

Essayez ça :

public final static String ID_EXTRA="com.fnesse.beachguide._ID";

Intent i = new Intent(this, CoastList.class);
i.putExtra("ID_Extra", ID_EXTRA);
i.putExtra("1", 111);
startActivity(i);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X