Eu tenho uma atividade com uma listview. Quando o usuário clica no item, o item "visualizador" é aberto:
List1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Intent nextScreen = new Intent(context,ServicesViewActivity.class);
String[] Service = (String[])List1.getItemAtPosition(arg2);
//Sending data to another Activity
nextScreen.putExtra("data", datainfo);
startActivityForResult(nextScreen,0);
overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
}
});
Isso funciona bem, mas na barra de ação a seta para trás ao lado do ícone do aplicativo não é ativada. Estou esquecendo de algo?
java
android
android-3.0-honeycomb
Joaolvcm
fonte
fonte
getActionBar().setDisplayHomeAsUpEnabled(true);
em onCreate eswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
emonOptionsItemSelected
? os dois em ServicesViewActivityRespostas:
Selvin já postou a resposta certa. Aqui, a solução em código bonito:
A função
NavUtils.navigateUpFromSameTask(this)
requer que você defina a atividade pai no arquivo AndroidManifest.xmlVeja aqui para ler mais.
fonte
getActionBar().setDisplayHomeAsUpEnabled(true);
caso você esteja usando bibliotecas de suporte.Verifique se o botão inicial do ActionBar está ativado na atividade:
Android, API 5+:
ActionBarSherlock e App-Compat, API 7+:
Android, API 11+:
Exemplo
MainActivity
que se estendeActionBarActivity
:Dessa forma, todas as atividades que você deseja podem ter a contrapressão.
Android, API 16+:
http://developer.android.com/training/implementing-navigation/ancestral.html
AndroidManifest.xml
:Exemplo
MainActivity
que se estendeActionBarActivity
:fonte
Para ativar o botão Voltar da ActionBar, você obviamente precisa de uma ActionBar em sua Atividade. Isso é definido pelo tema que você está usando. Você pode definir o tema para sua atividade no
AndroidManfiest.xml
. Se você estiver usando, por exemplo, o@android:style/Theme.NoTitleBar
tema, você não possui uma ActionBar. Nesse caso, a chamada paragetActionBar()
retornará nulo. Portanto, verifique se você tem um ActionBar primeiro.O próximo passo é definir a
android:parentActivityName
atividade que você deseja navegar se pressionar o botão Voltar. Isso deve ser feito noAndroidManifest.xml
também.Agora você pode ativar o botão Voltar no
onCreate
método da sua atividade "filho".Agora você deve implementar a lógica do botão voltar. Você simplesmente substitui o
onOptionsItemSelected
método em sua atividade "filho" e verifica o ID do botão Voltar, que éandroid.R.id.home
.Agora você pode disparar o método,
NavUtils.navigateUpFromSameTask(this);
mas se você não tiver especificado o que estáandroid:parentActivityName
em você,AndroidManifest.xml
isso causará um travamento no aplicativo.Às vezes, é isso que você quer, porque está lembrando que você esqueceu "algo". Portanto, se você deseja evitar isso, pode verificar se sua atividade tem um pai usando o
getParentActivityIntent()
método Se isso retornar nulo, você não especificou o pai.Nesse caso, você pode acionar o
onBackPressed()
método que faz basicamente o mesmo, como se o usuário pressionasse o botão Voltar no dispositivo. Uma boa implementação que nunca trava seu aplicativo seria:Observe que a animação que o usuário vê é diferente entre
NavUtils.navigateUpFromSameTask(this);
eonBackPressed()
.Depende de você que caminho você seguirá, mas achei a solução útil, especialmente se você usar uma classe base para todas as suas atividades.
fonte
Arquivo AndroidManifest:
adicionar detalhes
isso funciona :]
fonte
Anotações do Android:
Fonte: https://github.com/excilys/androidannotations
fonte
Eu acho que
onSupportNavigateUp()
é a maneira mais simples e melhor de fazer issoverifique o código neste link Clique aqui para obter o código completo
fonte
https://stackoverflow.com/a/46903870/4489222
Para conseguir isso, existem simplesmente 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
No método OnCreate, adicione isso:
Em seguida, adicione este método:
fonte
no
onCreated
método para as novas APIs.fonte
Se você estiver usando a Barra de Ferramentas, eu estava enfrentando o mesmo problema. Eu resolvi seguindo estes dois passos
fonte
As etapas a seguir são suficientes para voltar ao botão:
Etapa 1: esse código deve estar no Manifest.xml
Etapa 2: você não dará
na atividade dos pais ao iniciar a atividade infantil.
Etapa 3: se você precisar voltar para a Atividade pai a partir de Atividade infantil, basta fornecer este código para Atividade infantil.
fonte
Com base na resposta de Jared, tive que habilitar e implementar o comportamento do botão voltar da barra de ação em várias atividades e criei essa classe auxiliar para reduzir a duplicação de código.
Uso em uma atividade:
fonte