Вопрос

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

Спасибо,

Это было полезно?

Решение

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

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

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

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

В рамках подактивности (действие с камеры) вместо того, чтобы просто закрывать действие, когда пользователь нажимает на другое изображение вкладки, вам нужно создать новое намерение и включить индекс вкладки, который будет отображаться при возвращении в родительское приложение с помощью пакета extras.Чтобы передать его обратно родительскому вызову 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; 
    } 
  } 
} 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top