Android получить предыдущую активность - PullRequest
42 голосов
/ 14 ноября 2011

У меня есть 2 занятия: Activity1 и Activity2.В каждом из этих занятий есть кнопка, которая ведет меня к третьему занятию (MainActivity).В MainActivity я хочу знать, с какой страницы активности была вызвана.

Ответы [ 5 ]

47 голосов
/ 14 ноября 2011

Вы можете использовать атрибут putExtra Intent для передачи имени действия.

Вызов действия,

Intent intent = new Intent(this, Next.class);
intent.putExtra("activity","first");
startActivity(intent);

Следующее действие,

Intent intent = getIntent();
String activity = intent.getStringExtra("activity");

Теперь в строковом действии вы получите имя, из которого оно получено.

16 голосов
/ 14 ноября 2011

Вы можете использовать:

public ComponentName getCallingActivity()

, чтобы узнать, какая деятельность называется вашей текущей Activity.

6 голосов
/ 14 ноября 2011

Используйте putExtra () для определения предыдущего действия.

Intent i = new Intent(Activity1.this, MainActivity.class).putExtra("from", "activity1");
startActivity(i);

Чтобы проверить действие в основном действии,

if(getIntent().getStringExtra("from").equals("activity1")){
//From Activity 1
}else {
// Activity 2
}
0 голосов
/ 15 июня 2018

когда вы начинаете свою деятельность:

Intent intent = new Intent(activity, HistoryDetailsResults.class);
 intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getLocalClassName());
 activity.startActivity(intent);

Использование Activity.ACTIVITY_SERVICE Я предполагаю, что вы используете хорошую практику.(Activity.ACTIVITY_SERVICE - это String: 'активность' )

activity.getLocalClassName(). Это дает: view.YourActivity as String

РЕДАКТИРОВАТЬ: вместо использования действия activity.getLocalClassName() Я предпочитаю использовать activity.getClass().getSimpleName()

Шаг 1 в вашей начальной деятельности

Intent intent = new Intent(activity, HistoryDetailsResults.class);
 intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getClass().getSimpleName());
 activity.startActivity(intent);

Шаг 2 в вашей целевой деятельности

Intent intent = getIntent();
String startActivity = intent.getStringExtra(Activity.ACTIVITY_SERVICE)
String activityToCompare = YourActivityToCompare.class.getSimpleName()

И что вы хотите сделать:

if( startActivity.equalsIgnoreCase(activityToCompare) {
    //Do what you want
}
0 голосов
/ 14 ноября 2011

Когда вы переходите от одного занятия к другому, вы можете передать имя занятия, как указано ниже

Intent i = new Intent(this, deliveries.class);
i.putExtra("ActivityName", "ActivityOne");
startActivity(i);

и проверьте название действия в другой деятельности

Bundle extra = getIntent().getExtras();
String activityName = Long.parseLong(extra.getSerializable("ActivityName")
toString());

Я думаю, что это может решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...