Я сфокусируюсь на ответе, как разрешить Ваш workround так, чтобы это вело себя, как Вы хотите.
Для получения действий, выполненных на одном Действии в другом, требует трех шагов.
Запуск вторичное Действие (Ваше 'Действие камеры') как поддействие при помощи startActivityForResult
вместо startActivity
.
Intent i = new Intent(this,CameraActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
В рамках поддействия (Действие камеры), вместо того, чтобы просто закрыть Действие, когда пользователь нажимает на различное изображение вкладки, необходимо создать новое Намерение и включать индекс вкладки для отображения, когда Вы возвращаетесь к родительскому приложению с помощью пакета отдельно оплачиваемых предметов. Пасовать назад его к родительскому вызову setResult
прежде, чем звонить finish
для закрытия Действия камеры.
resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();
заключительный шаг находится в активности вызовов, переопределите onActivityResult
для прислушиваний к обратным вызовам от Действия камеры. Получите дополнительное от возвращенного Намерения определить индекс вкладки, которую необходимо отображать.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (STATIC_INTEGER_VALUE) : {
if (resultCode == Activity.RESULT_OK) {
int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
// TODO Switch tabs using the index.
}
break;
}
}
}