TabActivity + Botão Voltar

10 respostas
L

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

10 Respostas

fabriciov

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

:wink:

L

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

so para vcs ter um ideia estou passando um simple Log para imprimir uma mensagem no logcat e nada. Segue abaixo minha classe.

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);
	}
}
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

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.

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.

L

Ufaaa, valew fabriciov deu certo!

Marky.Vasconcelos, testado comentei e a aplicação fechou.

Obrigado a todos.

L

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 ?

Criado 3 de junho de 2013
Ultima resposta 4 de jun. de 2013
Respostas 10
Participantes 5