Это обычная проблема, если у вас много мероприятий. Я решил его с помощью одноэлементного Navigator класс вроде этого:
public class Navigator {
private static Navigator instance;
private Navigator() {
}
public static Navigator getInstance() {
if (instance == null) {
synchronized (Navigator.class) {
if (instance == null) {
instance = new Navigator();
}
}
}
return instance;
}
public void navigateToSubActivity(Context context, String data) {
Intent subAct = SubActivity.getCallingIntent(context);
// This is the data where you want to send to target activity.
subAct.putExtra("DATA", data);
context.startActivity(subAct);
}
}
Тогда в каждом упражнении вы должны добавить статический метод как (здесь, например, для SubActivity
класса):
/**
* Returns the intent for this activity
*
* @param context {@link Context}
* @return {@link Intent}
*/
public static Intent getCallingIntent(Context context) {
return new Intent(context, SubActivity.class);
}
Наконец, вам могут с радостью перейти на другую деятельность, используя:
Navigator.getInstance().navigateToSubActivity(this, "my data");
Помните, когда вы хотите поймать связанные данные p reviously послал, вам необходимо добавить следующий код в получателе деятельности onCreate()
:
Bundle extras = getIntent().getExtras();
mData = extras.getString("DATA");
// process the data after we receive it.
Примечание:
Если мне не изменяет память, я предполагаю, что это небольшое изменение, которое я делаю из Navigator class от Android-CleanArchitecture, хотя без injection
.
** Wrap код намерения в функции ** затем вызвать когда вам нужно воссоздать код намерения – Anish
иногда мне нужно перенести некоторые данные между действиями. –
Вы можете передавать данные в массив или как строку в параметр функции – Anish