fragmentTabHost = (FragmentTabHost) this
.findViewById(android.R.id.tabhost);
fragmentTabHost.setup(this, this.getSupportFragmentManager(),
R.id.realtabcontent);
TabSpec tabSpecB1 = fragmentTabHost.newTabSpec("tab1");
tabSpecB1.setIndicator("消息");
TabSpec tabSpecB2 = fragmentTabHost.newTabSpec("tab2");
tabSpecB2.setIndicator("联系人");
TabSpec tabSpecB3 = fragmentTabHost.newTabSpec("tab3");
tabSpecB3.setIndicator("动态");
TabSpec tabSpecB4 = fragmentTabHost.newTabSpec("tab4");
tabSpecB4.setIndicator("设置");
// 重点,必须装载碎片
fragmentTabHost.addTab(tabSpecB1, Message.class, null);
fragmentTabHost.addTab(tabSpecB2, Contact.class, null);
fragmentTabHost.addTab(tabSpecB3, Trends.class, null);
fragmentTabHost.addTab(tabSpecB4, Setting.class, null);
fragmentTabHost.setCurrentTabByTag("tab2");这是我写的一个碎片的代码,你那个按钮要监听啥的要在其他的类里面实现,比如我的Message.class这个类里面实现,但这个类要继承Fragment类

解决方案 »

  1.   

    我是在安卓2.2的环境中写的,能用FragmentTabHost吗?
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_t);
       TabHost mTabHost = (TabHost)findViewById(R.id.tabhost);
        mTabHost.setup();
            LayoutInflater inflater_tab1 = LayoutInflater.from(this);   
            inflater_tab1.inflate(R.layout.a, mTabHost.getTabContentView());  
            inflater_tab1.inflate(R.layout.b, mTabHost.getTabContentView());
            inflater_tab1.inflate(R.layout.c, mTabHost.getTabContentView());
            mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("设备").setContent(new Intent(TActivity.this,aa.class)));   
            mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("设置").setContent(R.id.FrameLayout02));   
            mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("更多").setContent(R.id.FrameLayout03));
            mTabHost.setCurrentTab(1);
            
            mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {

    @Override
    public void onTabChanged(String arg0) {
    // TODO Auto-generated method stub
    if("tab_test1".equals(arg0))
    {
    Toast.makeText(TActivity.this, "1", Toast.LENGTH_SHORT).show();


    }
    else if("tab_test2".equals(arg0))
    {
    Toast.makeText(TActivity.this, "2", Toast.LENGTH_SHORT).show();


    }
    else if("tab_test3".equals(arg0))
    {

    Toast.makeText(TActivity.this, "3", Toast.LENGTH_SHORT).show();

    }
    }
    });
            
    }
    这是我设置的TabHost,然后先只看tab_test1这一个选项卡,我让它与aa类连接,然后aa类里面我是这么写的package com.example.t;import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;public class aa extends Activity {
    private Button btnChange;
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    btnChange.setOnClickListener(new Button.OnClickListener() {

    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Toast.makeText(aa.this, "aaa",  Toast.LENGTH_SHORT).show();
    }
    });
    }
    }会无法运行,报错这是什么问题
      

  2.   

    看错误是你那个调用setup方法错了,你那个应该是已经废弃了的方法,你看看另外两个setup方法吧,那两个是带参数的。还有aa是继承Fragment,而不是Activity,这样tabhost才能找到
      

  3.   

    你可以让你的Activity extends TabActivity
      

  4.   

    实现这个效果有两种方式,第一种是楼主这样Activity没有继承TabActivity。这样的话布局文件什么的都要在xml中写。然后调用即可。像连接中的第二种方式:TabHost两种实现方式如果你想自己定义显示两外一个Activity的话,可以在这个Activity继承TabActivity。如上文链接的第一种方式。简单的代码如下:
    public class MainActivity extends TabActivity {    
            protected void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                TabHost tabHost =this.getTabHost();   
                LayoutInflater.from(this).inflate(R.layout.activity_main, tabHost.getTabContentView(), true);  
                tabHost.addTab(tabHost.newTabSpec("tab1")  
                        .setIndicator("", getResources().getDrawable(R.drawable.ic_launcher))  
                        .setContent(new Intent(MainActivity.this,aa.class)));  
                  tabHost.addTab(tabHost.newTabSpec("tab3")  
                        .setIndicator("tab3")  
                        .setContent(new Intent(MainActivity.this,aa.class)));         
                tabHost.addTab(tabHost.newTabSpec("tab2")  
                        .setIndicator("tab2")  
                        .setContent(new Intent(MainActivity.this,aa.class)));  
            }  
    }
      

  5.   

    Fragment能在安卓3.0以下的版本运行不?
      

  6.   

    你是tabhost的话,肯定得有子activity吧,当然在子activity里边监听了
      

  7.   

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("设备").setContent(new Intent(TActivity.this,aa.class)));
    这个不是设置到了子activity里面了么?
    然后我在aa这里继承了activity,在aa里面对button进行监听,但是就如我截图的那样,不能运行
      

  8.   

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("设备").setContent(new Intent(TActivity.this,aa.class)));
    这个不是设置到了子activity里面了么?
    然后我在aa这里继承了activity,在aa里面对button进行监听,但是就如我截图的那样,不能运行你aa.class里边setcontentview了么?
      

  9.   

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("设备").setContent(new Intent(TActivity.this,aa.class)));
    这个不是设置到了子activity里面了么?
    然后我在aa这里继承了activity,在aa里面对button进行监听,但是就如我截图的那样,不能运行你aa.class里边setcontentview了么?
    现在弄好了,不过冒出个新问题呃,就是
    所有的都重叠到了一起,然后我想是不是因为没设置android:background的问题,之后我把每个页面的背景都设置了,就会出现设备那一项显示出来的是更多那一项的内容,感觉是设备那一项的东西都被覆盖掉了,这是什么情况?
      

  10.   

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("设备").setContent(new Intent(TActivity.this,aa.class)));
    这个不是设置到了子activity里面了么?
    然后我在aa这里继承了activity,在aa里面对button进行监听,但是就如我截图的那样,不能运行你aa.class里边setcontentview了么?
    哈,没问题了,我是忘记在inflate中加入false了谢谢啦