web-dev-qa-db-fra.com

Comment trouver la dernière activité à partir de laquelle l'activité actuelle est ouverte dans Android?

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 ..

39
Dharmendra

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);
43
Matthew Willis

Android a une fonction pour cela, si vous utilisez startActivityForResult:

ComponentName prev = this.getCallingActivity ();

13
rexsacerdos

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;
        }
1
Inzimam Tariq IT

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.

1
Kartik Srivastava

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();
0
Reynaldo Pakpahan