Android: захват возврата активности

У меня есть вопрос относительно запуска новых видов деятельности. Это сводится к этому. У меня есть 3 вкладки в представлении

A) contains gMap activity
 B) camera activity
 C) some random text fields.

Требование состоит в том, что приложение работает в режиме портрета.

Все 3 вкладки работают, как ожидалось, за исключением поверхности предварительного просмотра камеры (B). Он поворачивается на 90 градусов. Это единственный способ сделать это правильно - настроить приложение на пейзаж, который бросает все мои вкладки, и в значительной степени неработоспособный.

Мое решение таково: замените

моя активность камеры с регулярной активностью, которая пуста с исключением

Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);

Это запускает мою CameraActivity. И это прекрасно работает. Я должен был сделать линейный макет и включить 3 изображения, которые выглядят как настоящие вкладки, поэтому я могу попытаться имитировать работу вкладок, поворачивая экран до пейзажа и сохраняя визуальные эффекты как портрет. Пользователь может щелкнуть одно из изображений (кнопок), чтобы отобразить следующую вкладку. Это моя проблема. Он должен выйти из моей "активности камеры", возвращаясь к "пустой активности" на вкладке, где ее следует интерпретировать, чтобы щелкнуть вкладку "Желаемые" с моего изображения.

Главное, когда он возвращается, он возвращается к пустой (черной) странице под вкладкой (потому что она "пустая" ). Как я могу захватить возвращаемое событие назад на страницу, которая называется активностью, а затем посмотреть, какие действия они выполнили?

Я могу установить onclicklistener, где я могу реагировать на поддельные вкладки (изображения), которые нужно щелкнуть, чтобы выйти из действия камеры. При выходе вкладка должна обновляться так, чтобы она возвращалась. любые предложения?

Спасибо,

Ответ 1

Я сосредоточусь на ответе на то, как разрешить ваш рабочий стол так, чтобы он вел себя так, как вы хотите.

Для захвата действий, выполняемых для одного действия в другом, требуется три шага.

Запустите вторичную активность (свою "активность камеры" ) как субактивность, используя startActivityForResult вместо startActivity.

Intent i = new Intent(this,CameraActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

В рамках субактивности (активность камеры) вместо того, чтобы просто закрывать действие, когда пользователь нажимает на другое изображение вкладки, вам нужно создать новый Intent и включить индекс вкладки, отображаемой при возврате в родительское приложение, используя пакет дополнений. Чтобы передать его родительскому вызову 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; 
    } 
  } 
} 

Ответ 2

private boolean firstTime = true;

@Override
protected void onResume() {
    super.onResume();
    Toast.makeText(this, "First time here? "+ firstTime , Toast.LENGTH_LONG).show();
    firstTime = false;
}