0
votes

Comment transmettre une activité comme paramètre en fonction

Je souhaite créer une fonction qui reçoit une activité en tant que paramètre et avec elle, elle changera à cette activité. Mais si j'utilise le .Class code> d'une activité pour appeler la fonction, il modifie le paramètre de cette fonction à une activité Classe code>, et il va donc accepter cette activité seulement.

Par exemple. Appelant la fonction: p> xxx pré>

comment il est défini: p> xxx pré>

et si j'essaie un autre appel: P>

sendUserToActivity(LoginActivity.class);


6 commentaires

Pouvez-vous essayer d'utiliser juste classe au lieu de la classe ?


Ça ne marche pas. Il demande à importer la classe d'activité et après cela, il affiche uniquement une erreur sur "MainAlacivit.Class" et "Loginactivit.Class" lorsque vous appelez la fonction


Pourquoi avez-vous besoin de passer de l'activité? Vous n'avez besoin que d'objet d'activité?


Passer toute l'activité a été ma première pensée


On dirait que vous devez utiliser le contexte de l'activité peut-être?


Utilisez la classe


3 Réponses :


4
votes

Peut-être que vous pouvez essayer ceci:

private void sendUserToActivity(Class<? extends Activity> activityClass) {
    Intent intent = new Intent(RegisterActivity.this, activityClass);
    startActivity(intent);
}


2 commentaires

Ça marche! Je ne penserais jamais que cela pourrait être écrit, merci!


Pas de problème, lisez un peu des génériques si vous le pouvez, c'est vraiment utile.



0
votes

Voici un exemple, comment le faire dans votre cas:

private void sendUserToActivity(MainActivity activityClass) {
    Intent intent = new Intent(activityClass, activityClass.getClass());
    startActivity(intent);
}


2 commentaires

Mais recevrait-il des activités autres que les autres déclarent MainAlactivité comme premier paramètre?


Aucun. Alexander Cavalheiro Becker ci-dessus a fait de l'affaire exactement comment vous avez besoin.



0
votes
xyz(XActivity.class);

void xyz(Class<?> cls)
{
    Intent intent = new Intent(MainActivity.this, cls);
    startActivity(intent);
}
does the job. I tried this now.

0 commentaires