[android] Démarrer une activité avec un paramètre


Answers

Ajoutez simplement des données supplémentaires à l'intention que vous utilisez pour appeler votre activité.

Dans l'activité de l'appelant:

Intent i = new Intent(this, TheNextActivity.class);
i.putExtra("id", id);
startActivity(i);

Dans le onCreate () de l'activité que vous appelez:

Bundle b = getIntent().getExtras();
int id = b.getInt("id");

Edit: Oups, Charlie Sheen était plus rapide.

Question

Je suis très nouveau sur le développement Android.

Je veux créer et démarrer une activité pour afficher des informations sur un jeu. Je montre cette information j'ai besoin d'un gameId.

Comment puis-je transmettre cet ID de jeu à l'activité? L'ID du jeu est absolument nécessaire, donc je ne veux pas créer ou démarrer l'activité si elle n'a pas l'ID.

C'est comme si l'activité n'avait qu'un seul constructeur avec un paramètre.

Comment puis je faire ça?

Merci.




Les réponses existantes (transmettez les données dans l' startActivity() passé à startActivity() ) montrent la manière normale de résoudre ce problème. Il existe une autre solution qui peut être utilisée dans le cas étrange où vous créez une activité qui sera démarrée par une autre application (par exemple, l'une des activités d'édition dans un plugin Tasker ) et ne contrôle donc pas l' Intent qui lance le Activity

Vous pouvez créer une Activity classe de base qui a un constructeur avec un paramètre, puis une classe dérivée qui a un constructeur par défaut qui appelle le constructeur de classe de base avec une valeur, comme suit:

class BaseActivity extends Activity
{
    public BaseActivity(String param)
    {
        // Do something with param
    }
}

class DerivedActivity extends BaseActivity
{
    public DerivedActivity()
    {
        super("parameter");
    }
}

Si vous devez générer le paramètre à transmettre au constructeur de la classe de base, remplacez simplement la valeur codée en dur par un appel de fonction qui renvoie la valeur correcte à transmettre.




Related