Desejo personalizar o botão Voltar da atividade na barra de ações, não no botão Voltar da tecla de hardware. Eu substituí o onBackPressed()
método. Funciona com o botão Voltar do meu emulador, mas não com o botão Voltar da barra de ação.
Eu quero que isso aconteça com a barra de ação. Como posso fazer isso?
Aqui está o meu código:
@Override
public void onBackPressed() {
Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show();
return;
}
Eu usei esta torrada, se pressionada de volta está funcionando ou não, mas a implementação real muda como voltar para a atividade anterior. Mas isso não está funcionando com o botão presente no topo da barra de ação (além do título da atividade).
Por favor, qualquer um poderia me especificar o problema.
return true;
parareturn super.onOptionsItemSelected(item)
. Então, você pode fazer algo acontecer quando o usuário clicar no botão Voltar da barra de ações, mas ainda manter a mesma funcionalidade do botão.Se você deseja que o botão Voltar da ActionBar se comporte da mesma maneira que o botão Voltar do hardware:
fonte
android.R.id.home
não disparasetHasOptionsMenu(true)
o método onCreate do fragmentoDuas coisas devem ser lembradas: o usuário pode pressionar o botão Voltar ou o botão inicial da barra de ações
Então, se você quiser redirecioná-lo para o mesmo destino, você pode fazer isso.
Isso levará o usuário à intenção de pressionar qualquer tecla ou o botão da barra de ação.
fonte
android.R.id.home
não disparafonte
Desculpe, minha resposta é tardia, mas para qualquer outra pessoa que chegue a esta página com a mesma pergunta, eu tentei o acima:
mas não conseguiu pegar o botão "Voltar" pressionado.
Eventualmente, encontrei um método que funcionou para mim em https://stackoverflow.com/a/37185334/3697478 que é substituir o "onSupportNavigateUp ()", pois estou usando a barra de ações da biblioteca de suporte "AppCompatActivity". (Existe um equivalente "onNavigateUp ()" para a biblioteca de barra de ação / barra de ferramentas mais recente.)
e removi a seção "android: parentActivityName =". MainActivity "do arquivo de manifesto.
fonte
Eu consegui isso, usando apenas duas etapas,
Etapa 1: Vá para AndroidManifest.xml e adicione o parâmetro na tag - android: parentActivityName = ". Home.HomeActivity"
exemplo:
Etapa 2: em ActivityDetail, adicione sua ação para a página / atividade anterior
exemplo:
fonte
Se quiser retornar à instância anterior de uma Activity pressionando o botão home da ActionBar, sem recriá- la, você pode substituir o método getParentActivityIntent para usar o da pilha de retorno:
EDIT:
Além disso, você pode obter o mesmo resultado,
definindo o launchMode de sua atividade pai para singleTop.
Portanto, defina
android:launchMode="singleTop"
como atividade pai em seu manifesto.Ou você pode usar o sinalizador FLAG_ACTIVITY_CLEAR_TOP com a intenção UP.
referência: Fornecendo navegação para cima
fonte
(1) Adicionar atividade pai para sua atividade filho (AndroidManifest.xml)
(2) substituir o método onSupportNavigateUp dentro da atividade filho
fonte
fonte
Existem várias maneiras de configurar o botão Voltar na barra:
1) método
.setDisplayHomeAsUpEnabled(true);
fará isso, e então você pode simplesmente substituirandroid.R.id.home
2) adicionar
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="my.package.parrent" />
no Android Manifest, mas neste caso você não pode substituirandroid.R.id.home
em OnOptionsMenuSelected... para aqueles que se perguntam por que não funciona para eles ...
fonte