J'ai une activité qui peut être ouverte à partir de plus de 4 ou 5 activités différentes afin que je puisse trouver à partir de quelle activité mon activité actuelle est appelée....
Si vous avez une idée, aidez-moi.
J'ai une activité qui peut être ouverte à partir de plus de 4 ou 5 activités différentes afin que je puisse trouver à partir de quelle activité mon activité actuelle est appelée....
Si vous avez une idée, aidez-moi.
Vous pouvez ajouter des éléments supplémentaires à l'intention que vous utilisez pour lancer l'activité afin d'indiquer d'où vient l'intention ou quelle est la demande.
Par exemple :
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("caller", "MainActivity");
startActivity(intent);
et ensuite votre OtherActivity
pourrait détecter l'"appelant" dans son onCreate
:
String caller = getIntent().getStringExtra("caller");
Class callerClass = Class.forName(caller);
Mettez quelques extras à l'intention des différentes activités.
eg :
startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));
et obtenir des extras dans l'activité en cours comme
string act = getIntent().getStringExtra("from");
donc "act" vous indiquera l'activité d'appel.
Créez un Interfare Et mettez des valeurs pour vos activités Puis passez ces valeurs dans l'Intent Et obtenez dans l'activité enfant regardez ce morceau de code
public interface ActivityRefs {
public static final int ACTIVITY_1 = 1;
public static final int ACTIVITY_2 = 2;
public static final int ACTIVITY_3 = 3;
}
Créer un Intent et passer la valeur comme ceci dans l'activité Calling
intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);
Ensuite, dans l'activité Called
int callingActivityName = getIntent().getIntExtra("callingActivity", 0);
switch (callingActivityName) {
case ActivityConstants.ACTIVITY_1:
// Activity3 is started from Activity1
break;
case ActivityConstants.ACTIVITY_2:
// Activity3 is started from Activity2
break;
}
J'ai résolu le problème, dans mon cas nous sommes sur ActivityA
a ActivityB
puis vous voulez revenir à ActivityA
de manière programmatique, voici mon code
ActivitéA :
String currentActivity;
void onCreate(...){
...
currentActivity = this.getClass().getName();
...
}
Puis sur votre intention (toujours dans ActivityA
) :
Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("from", currentActivity);
startActivity(intent);
this.finish();
Maintenant sur l'activité B :
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
Puis sur votre intention (toujours dans ActivityB
) pour revenir à ActivityA
:
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();
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.