Pergunta

Eu tenho uma pergunta sobre o lançamento de novas actividades. Tudo se resume a isso. Eu tenho 3 guias em uma visão

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

exigência é que o aplicativo é executado no modo retrato.

Todos os 3 guias funcionam como esperado w / exceção da câmera de visualização de superfície (B). Ele é rodado de 90 graus. Eles única maneira de torná-lo corrigir é definir o aplicativo de paisagem que joga todos os meus guias ao redor, e é praticamente inviável.

A minha solução é esta: substituir

minha atividade câmera com uma atividade regular que está vazia w / exceção de

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

Esta lança meu CameraActivity. E que funciona bem. Eu tive que fazer um layout linear e incluem 3 imagens que se parecem com guias reais, para que eu possa tentar imitar o funcionamento das abas ao girar a tela para paisagem e manter os recursos visuais como retrato. O usuário pode clicar em uma das imagens (botões) para exibir a próxima guia. Este é o meu problema. Deve sair o meu 'atividade câmera' retornando à 'actividade em branco' em uma aba, onde ele deve ser interpretado clique na guia desiered da minha imagem.

A principal coisa é que, quando ele retorna, ele retorna a uma página em branco (preto) em uma guia (porque é 'vazio'). Como posso capturar o evento de volta retorno para a página que chamou a atividade, e depois ver que ação eles realizaram?

Eu posso definir um OnClickListener onde eu possa responder às guias falsos (imagens) a ser clicados para sair da atividade câmera. Na saída, o guia deve atualizar para que é onde você voltar. Alguma sugestão?

Obrigado,

Foi útil?

Solução

Vou me concentrar em responder como resolver o seu workround para que ele se comporta como você quer.

Para ações de captura realizada em uma atividade dentro de outro requer três etapas.

lançar a actividade secundária (o seu 'câmera Activity') como um subatividade usando startActivityForResult vez de startActivity.

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

Dentro do subatividade (Atividade câmera), em vez de apenas o encerramento de atividades quando um usuário clica na imagem guia diferente, você precisa criar uma nova Intenção e incluem o índice do guia para exibir quando você retornar para o aplicativo pai usando os extras pacote. Para passá-lo de volta para o setResult chamada pai antes de chamar finish para fechar a atividade da câmera.

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

O passo final é na Atividade vocação, override onActivityResult para ouvir chamadas de retorno da atividade câmera. Obter o extra da retornou Intenção para determinar o índice da guia você deve estar exibindo.

@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; 
    } 
  } 
} 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top