Я пробовал это, и он работает, но я не знал, было ли это плохо или нет, поскольку вся помощь по передаче данных между действиями, по-видимому, использует намерения.
В MainActivity у меня есть:
static PilotRecord pilotRecord = new PilotRecord(); //PilotRecord just contains data item declarations
В MainActivity.onCreate:
pilotRecord.fuel = 100;
В MainActivity.onClick:
Intent intent = new Intent(this, SubActivity.class);
startActivityForResult(intent, 0);
В SubActivity.onCreate у меня есть:
MainActivity.pilotRecord.fuel = 200;
В SubActivity.onClick:
MainActivity.pilotRecord.fuel = 300;
setResult(RESULT_OK);
finish();
Когда я запускаю MainActivity, значение топлива составляет 100
Если я нажму в MainActivity, появится SubActivity, как ожидалось
Если я нажму в SubActivity, отобразится MainActivity и значение топлива теперь 300
Если я нажму кнопку "Назад", отобразится "MainActivity" и значение топлива теперь будет 200
Кто-нибудь знает о каких-либо потенциальных проблемах с этим, поскольку мне кажется мне проще, чем настройке намерений и т.д.
Я понимаю, что то, что вы делаете, приведет к потере данных.
SubActivity не должен манипулировать данными вызываемой операции. Я не думаю, что есть гарантия того, что ваш MainActivity даже существует...
Система может решить убить ее в любое время и перезапустить ее, когда SubActivity сообщит, что она готова вернуться к MainActivity.
Вы должны передать данные в комплекте и позволить MainActivity изменять свои данные на основе результатов.
Bundle stats = new Bundle();
stats.putString("fuel","300");
setResult(RESULT_OK, "PilotRecord", stats);
finish();
Кроме того, помните, что вы должны сохранять уровень "Fuel" в каком-то постоянном хранилище, когда onPause() вызывается в вашей MainActivity.
Я бы посоветовал внимательно прочитать документацию для Activity, так как очень важно реализовать правильные обратные вызовы.
Если вы действительно хотите взломать его, создайте еще один класс, в котором будут храниться все ваши статические переменные, которые должны быть разделены.