TabActivity + Botão Voltar

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í !

:wink:

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 ?