Fala galera, estou precisando da ajuda de vcs.
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.
Qual a solução para resolver esse problema?
Desde já, obrigado a todos
Leandrooooo
Esta pegando o evento com o onBackPressed ou dispatchKeyEvent ?
Não tive problema utilizando o onBackPress…
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í !
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
so para vcs ter um ideia estou passando um simple Log para imprimir uma mensagem no logcat e nada. Segue abaixo minha classe.
[code]public class TabHostNovoPedido extends TabActivity implements OnTabChangeListener{
private TabHost mTabHost;
private View mTabView;
int tabSel = 0;
public void onCreate(Bundle savedInstanceState) {
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);
}
@Override
public void onBackPressed() {
super.onBackPressed();
Log.e("passou", "passouuuuuuuuuuuwwwwwwwwwxxxxxxx");
}
@SuppressLint("CutPasteId")
private void criarAbas(int numTab) {
mTabHost = getTabHost();
mTabHost.setOnTabChangedListener(TabHostNovoPedido.this);
TabHost.TabSpec Spec;
Intent intent;
mTabView = LayoutInflater.from(this).inflate(R.layout.tabs_bg_view, null);
TextView tv = (TextView) mTabView.findViewById(R.id.tabsText);
intent = new Intent().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);
TextView tv1 = (TextView) mTabView.findViewById(R.id.tabsText);
intent = new Intent().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);
}
@Override
public void onTabChanged(String tabId) {
Log.i("Tab", "Clicou na tab " + tabId);
}
}[/code]
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();
}
Tentei, mais sem novidade o problema continua.
Tem alguma outra ideia?
Ta complicado… rs
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();
}
Como teste, comente o super.onBackPressed() e veja se a aplicação ainda se fecha.
http://developer.android.com/reference/android/app/TabActivity.html
Na documentação não diz nenhum método novo que essa classe tenha criado para lidar com eventos de OnBack.
Ufaaa, valew fabriciov deu certo!
Marky.Vasconcelos, testado comentei e a aplicação fechou.
Obrigado a todos.
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 ?