Tab组件不能显示的问题,期待大牛解答!!!

iceli 2014-03-28 03:07:47
使用Tab组件的两种方法:
第一:调用TabActivity的getTabHost()方法获得TabHost对象,通过TabHost创建Tab选项。
Activity代码如下:
package com.amaker.ch04_tab;

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

public class MainActivity extends TabActivity {
public void onCreat(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

TabHost th=getTabHost();

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

th.addTab(th.newTabSpec("all").setIndicator("所有通话记录").setContent(R.id.TextView01));
th.addTab(th.newTabSpec("ok").setIndicator("已接来电").setContent(R.id.TextView02));
th.addTab(th.newTabSpec("cancel").setIndicator("未接来电").setContent(R.id.TextView03));
}
}

布局文件代码如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/FrameLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<TabHost
android:id="@+id/TabHost01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TabHost>

<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="所有通话记录"/>

<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已接来电"/>

<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="未接来电"/> "
</FrameLayout>

结果如下:

第二种方法:Tab的内容通过实现一个接口TabHost.TabContentFactory的createTabContent方法来指定
package com.amaker.ch04_tab01;

import java.util.ArrayList;
import java.util.List;

import com.amaker.ch04_tab01.R;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;

public class MainActivity extends TabActivity implements
TabHost.TabContentFactory{

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
TabHost th=getTabHost();

th.addTab(th.newTabSpec("all").setIndicator("所有通话记录").setContent(this));
th.addTab(th.newTabSpec("ok").setIndicator("已接来电").setContent(this));
th.addTab(th.newTabSpec("cancel").setIndicator("未接来电").setContent(this));
}


@Override
public View createTabContent(String tag) {
// TODO Auto-generated method stub
ListView lv=new ListView(this);
List<String> list=new ArrayList<String>();
list.add(tag);

if(tag.equals("all")){
list.add("tom");
list.add("kite");
list.add("rose");
}else if(tag.equals("ok")){
list.add("tom");
list.add("kite");
}else{
list.add("rose");
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
lv.setAdapter(adapter);

return lv;
}

}

运行结果如下:

请问为什么第一种方法没有显示出Tab选项卡的内容?是因为The type TabActivity is deprecated吗?但是第二种方法也继承了TabActivity,为什么能正常运行显示?
...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧