Android: Захватив возвращение деятельности

голоса
78

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

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

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

Благодаря,

Задан 16/01/2009 в 05:05
источник пользователем
На других языках...                            


1 ответов

голоса
155

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

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

Запуск вторичной активности (ваша «камера активность») в качестве subactivity, используя startActivityForResultвместо startActivity.

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

В subactivity (камера активность), а не просто закрыть активность , когда пользователь нажимает на другую вкладку изображение, необходимо создать новый Intent и включить индекс вкладки для отображения , когда вы вернетесь к родительскому приложению , используя пакет специальных принадлежностей , Для того, чтобы передать его обратно в родительский вызов setResultперед вызовом , finishчтобы закрыть камеру активность.

resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

Заключительный шаг в вызывающей деятельности, переопределения onActivityResultдля прослушивания обратных вызовов от камеры деятельности. Получить дополнительные из возвращенного Intent для определения индекса вкладки вы должны быть отображаются.

@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; 
    } 
  } 
} 
Ответил 16/01/2009 в 09:20
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more