/ / Atualizando gaveta de navegação após back press - android, android-fragmentos, navegação-gaveta, fragment-backstack

Atualizando gaveta de navegação após back press - android, android-fragmentos, navegação-gaveta, fragment-backstack

Eu estou implementando um Android aplicação com um Navigation Drawer e eu tenho um problema com isso.

Eu comecei a partir do modelo (app Android comgaveta de navegação) no estúdio Android e adicionou uma nova seção a ele - Configurações. Ao clicar no botão de configurações, o usuário é levado para uma nova atividade e o usuário pode voltar ou pressionando o botão "para cima" na barra de ação (que funciona perfeitamente) ou pressionando o botão físico de volta. Essa parte não funciona tão bem.

Ao pressionar o botão "para cima" e depois abrira barra de navegação, minha home page é destacada (selecionada). Mas ao usar o botão Voltar e abrir a gaveta de navegação, o item Configurações é selecionado, como se o usuário estivesse visualizando essa página e não a página inicial.

Então, isso acontece porque o fragmento da gaveta de navegaçãoNão é atualizado e não encontrei nenhuma maneira de resolver este problema. O que eu gostaria é que a gaveta de navegação seja recriada (o que eu acho que acontece quando pressiono o botão "para cima"). Você sabe como eu posso fazer isso? isso acontece?

Comecei a trabalhar em uma solução baseada nisso:

getSupportFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
public void onBackStackChanged() {
// Update your UI here.
}
});

Mas eu não sei o que escrever lá que irá atualizar toda a interface do usuário (experimentei chamar onCreate (), mas é muito feio e não pode ser o caminho certo).

Alguma sugestão?

ATUALIZAR:

O evento onBackStackChanged não é enviado ao pressionar BACK de outra atividade. Apenas para fragmentos na atividade atual.

Respostas:

0 para resposta № 1

Você tem que substituir o botão de ação de volta como este:

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case android.R.id.home:
this.finish();

//or

super.onBackPressed();

break;

}
return true;

}

0 para resposta № 2

Eu tive o mesmo problema.Eu usei notifyDataSetChanged () no ListView Adapter.

Em getView () eu usei,

if(mListView.isItemChecked(position)) {
convertView.setBackgroundColor(getResources().getColor(R.color.md_black_1000_12));
}else{
convertView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
notifyDataSetChanged();