У меня есть одна активность, которая может быть открыта из более 4 или 5 различных действий, поэтому я могу найти, из какой активности называется моя текущая деятельность...
Если какая-нибудь идея, пожалуйста, помогите мне..
У меня есть одна активность, которая может быть открыта из более 4 или 5 различных действий, поэтому я могу найти, из какой активности называется моя текущая деятельность...
Если какая-нибудь идея, пожалуйста, помогите мне..
Возможно, вы захотите добавить дополнительные функции к намерениям, которые вы используете для начала деятельности, чтобы указать, откуда идет речь или что такое запрос.
Например:
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("caller", "MainActivity");
startActivity(intent);
а затем ваш OtherActivity
может обнаружить "вызывающего" в своем onCreate
:
String caller = getIntent().getStringExtra("caller");
Class callerClass = Class.forName(caller);
У Android есть функция для него, если вы используете startActivityForResult:
ComponentName prev = this.getCallingActivity();
Поместите некоторые дополнительные функции для разных различных действий.
например:
startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));
и получить дополнительные функции в текущей деятельности как
string act = getIntent().getStringExtra("from");
поэтому "act" укажет вам вызывающую активность.
Создайте Interfare И добавьте значения для своей деятельности. Затем передайте эти значения в намерении и войдите в Child Activity, посмотрите на этот фрагмент кода
public interface ActivityRefs {
public static final int ACTIVITY_1 = 1;
public static final int ACTIVITY_2 = 2;
public static final int ACTIVITY_3 = 3;
}
Создайте намерение и передайте значение, подобное этому в деятельности Calling
intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);
Затем в вызываемой активности
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;
}
Я решил это, в моем случае мы находимся на ActivityA
до ActivityB
, затем хотим вернуться к ActivityA
программно, вот мой код
ActivityA:
String currentActivity;
void onCreate(...){
...
currentActivity = this.getClass().getName();
...
}
Затем по вашему намерению (еще в ActivityA
):
Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("from", currentActivity);
startActivity(intent);
this.finish();
Теперь на ActivityB:
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
Затем по вашему намерению (все еще в ActivityB
) для возврата на ActivityA
:
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();