android_TabHost设置点击事件newTapSpec_141001

找对TabHost的tab设置点击事件,然后,在网上发现了好多的错误或者过时的代码,这代码害人啊~

大致总结一下,个人总结的简单的设置点击事件的方法

两种方法:

1)第一种方法,继承于TabActivity (这种方法已经弃用,不过,为了记住查询时,他人的错误做法贴上代码)

2)第二种方法,继承于Activity, 这是目前使用的方法,主要为使用newTabSpec建立tabID设置点击事件


第一种方法(TabActivity) : [代码]

 //MainActivity.java文件

package com.yline.tabhost_tabac;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;

public class MainActivity extends TabActivity implements OnTabChangeListener {
	private TabHost tabHost;

	@Override  
	public void onCreate(Bundle savedInstanceState) {  
		super.onCreate(savedInstanceState);  

		tabHost = this.getTabHost();

		LayoutInflater.from(this).inflate(R.layout.activity_main,tabHost.getTabContentView());  

		tabHost.addTab(tabHost.newTabSpec("tabOne")    
				.setIndicator("界面1", getResources().getDrawable(R.drawable.ic_launcher))    
				.setContent(R.id.tab1));  

		tabHost.addTab(tabHost.newTabSpec("tabTwo")    
				.setIndicator("界面2")    
				.setContent(R.id.tab2));

		tabHost.addTab(tabHost.newTabSpec("tabThree")    
				.setIndicator("界面3")    
				.setContent(R.id.tab3));

		tabHost.setOnTabChangedListener(this);         
	}

	public void onTabChanged(String tabId){  
		if(tabId.equals("tabOne")){
			Toast.makeText(this, "分页1", 0).show();  
		}  
		if(tabId.equals("tabTwo")){  
			Toast.makeText(this, "分页2", 0).show();  
		}  
		if(tabId.equals("tabThree")){  
			Toast.makeText(this, "分页3", 0).show();  
		}  
	}  
}  
   // activity_main.xml文件



    

        
        

        

            

                
第一种方法 --> 运行结果:

 操作:

 1)点击本tab时,没有反应

 2)点击其他tab时,会跳出一个 toast..maketext; 提示当前分页

android_TabHost设置点击事件newTapSpec_141001_第1张图片

第二种方法(Activity) : [代码]

  //MainActivity.java 文件

package com.yline.tabhost_ac;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;

public class MainActivity extends Activity implements OnTabChangeListener {
	private TabHost tabHost;
	private String tabA = "TAB_A";
	private String tabB = "TAB_B";
	private String tabC = "TAB_C";
	private Intent intent_A;
	private Intent intent_B;
	private Intent intent_C;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tabHost = (TabHost) findViewById(R.id.tabhost);
		tabHost.setup();

		intent_A = new Intent(MainActivity.this, TAB_A.class);
		intent_B = new Intent(MainActivity.this, TAB_B.class);
		intent_C = new Intent(MainActivity.this, TAB_C.class);

		tabHost.addTab(tabHost.newTabSpec(tabA)
				.setIndicator("界面A")
				.setContent(R.id.tab1));

		tabHost.addTab(tabHost.newTabSpec(tabB)
				.setIndicator("界面B")
				.setContent(R.id.tab2));

		tabHost.addTab(tabHost.newTabSpec(tabC)
				.setIndicator("界面C")
				.setContent(R.id.tab3));

		tabHost.setCurrentTab(0);   //防止重复点击 产生错误

		tabHost.setOnTabChangedListener(this);
	}

	@Override
	public void onTabChanged(String tabId) {
		if (tabId.equals(tabA)) {
			startActivity(intent_A);
		} else if (tabId.equals(tabB)) {
			startActivity(intent_B);
		} else if (tabId.equals(tabC)) {
			startActivity(intent_C);
		}

	}
}
注释:

      tabHost.setCurrentTab(0) ; 一定要写, 这是防止重复点击tabid,而跳出对应的layout  

//activity_main.xml文件



    

        
        

        

            

                
  // AndroidMainfest.xml 文件


        
            
                

                
            
        
        
        
        
        
        
        
    

其他TAB_A.java, TAB_B.java, TAB_C.java ; 以及 tab_a.xml , tab_b.xml , tab_c.xml 都是可以自定义的

我贴上其中一组 TAB_A.java 以及 tab_a.xml

// TAB_A.java文件

package com.yline.tabhost_ac;

import android.app.Activity;
import android.os.Bundle;

public class TAB_A extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tab_a);
	}
	
}
 //tab_a.xml文件




    

第二种方法 --> 运行结果:

 操作:

 1)点击本tab时,没有反应

 2)点击其他tab时,会跳出一个 新的Activity (第二幅图)

android_TabHost设置点击事件newTapSpec_141001_第2张图片android_TabHost设置点击事件newTapSpec_141001_第3张图片



本事例 源代码 下载 (可运行):

http://pan.baidu.com/s/1c0gY4Ac

个人参考文件:

http://www.cnblogs.com/tt_mc/archive/2010/05/26/1744502.html



你可能感兴趣的:(android_TabHost设置点击事件newTapSpec_141001)