tabhost组件点击切换操作

追风箭 发布于 2014/05/07 08:34
阅读 613
收藏 0
在使用TabHost组件时遇到了困难,我没有让它继承TabActivity,而是定义自己的tabhost,具体代码如下:
mian.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabHost
        android:id="@android :id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android :id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </TabWidget>

            <FrameLayout
                android:id="@android :id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</LinearLayout>

tab1.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tab1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/buttontab1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tab1" />

    <TextView
        android:id="@+id/textViewtab1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="原始显示" />

</LinearLayout>
tab2.xml文件与tab1.xml文件相似,包含一个按钮和一个textview组件,此处不再贴代码。

具体java代码:
TabHostTestActivity.java代码:
package com.tabhost.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;

public class TabHostTestActivity extends Activity {
    /** Called when the activity is first created. */
private TabHost tabHost; //声明TabHost组件的对象
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tabHost=(TabHost)findViewById(android.R.id.tabhost); //获取TabHost对象
        tabHost.setup(); //初始化TabHost组件
        
        LayoutInflater inflater = LayoutInflater.from(this);  // 声明并实例化一个LayoutInflater对象  
        inflater.inflate(R.layout.tab1, tabHost.getTabContentView());  
        inflater.inflate(R.layout.tab2, tabHost.getTabContentView());
        tabHost.addTab(tabHost.newTabSpec("tab01").setIndicator("Tab1").setContent(R.id.tab1));  //添加第一个标签页
        tabHost.addTab(tabHost.newTabSpec("tab02").setIndicator("Tab2").setContent(R.id.tab2));  //添加第二个标签页
        
        tabHost.setCurrentTab(0);
    }
}

Tab1.java代码:
package com.tabhost.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Tab1 extends Activity 
{
TextView tvTab1;
Button btnTab1;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);

tvTab1 = (TextView)findViewById(R.id.textViewtab1);
btnTab1 = (Button)findViewById(R.id.buttontab1);

btnTab1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
tvTab1.setText("Tab1按钮已经按下");
}
});
}

}

Tab2.java代码与之类似,按下按钮更改textview的显示,运行结果如下。


但是有一个问题,在各个tab中的按钮操作无效,不知是什么原因,好像是tab与他的Activity没有相互关联,但是点击tab后明明是显示了与之对应的Activity,从网上查了一下,有些说要用setOnTabChangedlistener这个函数,具体怎么操作呢?还请各位高手指点,请尽量详细,谢谢!

加载中
返回顶部
顶部