J'ai une activité qui peut être ouverte à partir de 4 ou 5 activités différentes pour que je puisse trouver à partir de quelle activité mon activité actuelle est appelée ...
Si une idée s'il vous plaît aidez-moi ..
Vous voudrez peut-être ajouter des extras à l'intention que vous utilisez pour démarrer l'activité afin d'indiquer d'où provient l'intention ou en quoi consiste la demande.
Par exemple:
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("caller", "MainActivity");
startActivity(intent);
et alors votre OtherActivity
pourrait détecter le "correspondant" dans sa onCreate
:
String caller = getIntent().getStringExtra("caller");
Class callerClass = Class.forName(caller);
Android a une fonction pour cela, si vous utilisez startActivityForResult:
ComponentName prev = this.getCallingActivity ();
Créez une interface et mettez des valeurs pour vos activités Puis transmettez ces valeurs dans l'intention et entrez dans l'activité des enfants jetez un coup d'œil à ce 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 une intention et transmettre une valeur comme celle-ci dans l'activité Appel
intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);
Puis dans l'activité appelée
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;
}
Mettez quelques extras à l'intention pour les différentes activités
par exemple:
startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));
et obtenir des extras dans l'activité actuelle
string act = getIntent().getStringExtra("from");
alors "act" vous indiquera l'activité appelante.
Je l'ai résolu, dans mon cas, nous sommes sur ActivityA
à ActivityB
puis voulons revenir à ActivityA
par programmation, 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 ActivityB:
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
Ensuite, sur votre intention (toujours dans ActivityB
) pour revenir à ActivityA
:
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();