Tenho minha classe que extends TabActivity e nela não consigo pegar o evento do click no botão voltar. Quando altero a extends para Activity e comento as linhas que vou criar as minh abas aí funciona.
Esta pegando o evento com o onBackPressed ou dispatchKeyEvent ?
Não tive problema utilizando o onBackPress…
igrsantos
leandrooooo,
Você consegue utilizar o evento onBackPressed() sim, pois a TabActivity
estende Activity.
Olhe direitinho se você não está com problemas de referência,
qualquer dúvida estamos aí !
L
leandrooooo
Então, estou utilizando o onBackPressed(), mais quando click no botão voltar não está passando por ele. Fiz o debug e nada.
É possível vc me mostrar como fica o método implementando?
Valew
L
leandrooooo
so para vcs ter um ideia estou passando um simple Log para imprimir uma mensagem no logcat e nada. Segue abaixo minha classe.
publicclassTabHostNovoPedidoextendsTabActivityimplementsOnTabChangeListener{privateTabHostmTabHost;privateViewmTabView;inttabSel=0;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);setContentView(R.layout.activity_tab_host_novo_pedido);mTabHost=(TabHost)findViewById(android.R.id.tabhost);criarAbas(0);}@OverridepublicvoidonBackPressed(){super.onBackPressed();Log.e("passou","passouuuuuuuuuuuwwwwwwwwwxxxxxxx");}@SuppressLint("CutPasteId")privatevoidcriarAbas(intnumTab){mTabHost=getTabHost();mTabHost.setOnTabChangedListener(TabHostNovoPedido.this);TabHost.TabSpecSpec;Intentintent;mTabView=LayoutInflater.from(this).inflate(R.layout.tabs_bg_view,null);TextViewtv=(TextView)mTabView.findViewById(R.id.tabsText);intent=newIntent().setClass(this,NovoPedidoActivity.class);tv.setText("Pedido:");Spec=mTabHost.newTabSpec("tab1").setIndicator(mTabView).setContent(intent);mTabView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector));mTabHost.addTab(Spec);mTabView=LayoutInflater.from(this).inflate(R.layout.tabs_bg_view,null);TextViewtv1=(TextView)mTabView.findViewById(R.id.tabsText);intent=newIntent().setClass(this,NovoPedidoItemActivity.class);tv1.setText("Itens:");Spec=mTabHost.newTabSpec("tab2").setIndicator(mTabView).setContent(intent);mTabView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector));mTabHost.addTab(Spec);mTabHost.setCurrentTab(numTab);}@OverridepublicvoidonTabChanged(StringtabId){Log.i("Tab","Clicou na tab "+tabId);}}
igrsantos
Amigo ele não imprimiu no Log, porque o método onBackPressed(),
tenho como padrão dá um finish() na Activity.
Tente implementar dessa forma:
@Override
public void onBackPressed() {
Log.e("passou", "passouuuuuuuuuuuwwwwwwwwwxxxxxxx");
// adicione o super no fim.
super.onBackPressed();
}
L
leandrooooo
Tentei, mais sem novidade o problema continua.
Tem alguma outra ideia?
Ta complicado… rs
fabriciov
o problema é que o evento back press é pego na activity hospedada… adicione esse código nessas activitys (NovoPedidoItemActivity, NovoPedidoActivity, etc)
Com isso o onBackPressed da TabActivity vai ser chamado normalmente.
@Override
public void onBackPressed() {
this.getParent().onBackPressed();
}
Marky.Vasconcelos
Como teste, comente o super.onBackPressed() e veja se a aplicação ainda se fecha.
Na documentação não diz nenhum método novo que essa classe tenha criado para lidar com eventos de OnBack.
L
leandrooooo
Ufaaa, valew fabriciov deu certo!
Marky.Vasconcelos, testado comentei e a aplicação fechou.
Obrigado a todos.
L
levijescika
por favor queria muito saber a resposta dessa questão, se alguém poder me ajudar sou grato;
a) O que acontece se existirem mais de uma Activity com mesmo nome pra Action ?