2 u013003369 u013003369 于 2015.06.10 09:34 提问

android用ActivityGroup实现tabhost一个tab多界面
    tabhost界面
    mTabHost = getTabHost();
        //FileMianActivity
        mTabHost.addTab(mTabHost
                .newTabSpec(TabBindingConfig.FILE_PERSONAL)
                .setIndicator(
                        TabBindingConfig.FILE_PERSONAL)
                .setContent(new Intent(TabActivity.this, FileMianActivity.class)));
        //ShareMainActivity
        mTabHost.addTab(mTabHost
                .newTabSpec(TabBindingConfig.SHARE_KNOWLEDGE)
                .setIndicator(
                        TabBindingConfig.SHARE_KNOWLEDGE)
                .setContent(new Intent(TabActivity.this, GropuActivity.class)));
        //TransferMianActivity
        mTabHost.addTab(mTabHost
                .newTabSpec(TabBindingConfig.TRANSFER)
                .setIndicator(
                        TabBindingConfig.TRANSFER)
                .setContent(new Intent(TabActivity.this, TransferMianActivity.class)));
        //MoreMianActivity
        mTabHost.addTab(mTabHost
                .newTabSpec(TabBindingConfig.MORE)
                .setIndicator(
                        TabBindingConfig.MORE)
                .setContent(
                        new Intent(TabActivity.this, MoreMianActivity.class)));

                        tabhost点击事件
                                        switch (view.getId()) {
            case R.id.main_layout1:
                mImageview1.setImageResource(R.drawable.tab_fileclick);
                mTextview1.setTextColor(Color.parseColor("#3788de"));
                mTextviewIcon1.setVisibility(View.INVISIBLE);
                mTabHost.setCurrentTabByTag(TabBindingConfig.FILE_PERSONAL);
                break;

            case R.id.main_layout2:
                mImageview2.setImageResource(R.drawable.tab_shareclick);
                mTextview2.setTextColor(Color.parseColor("#3788de"));
                mTextviewIcon2.setVisibility(View.INVISIBLE);

// mTabHost.setCurrentTab(1);
mTabHost.setCurrentTabByTag(TabBindingConfig.SHARE_KNOWLEDGE);
break;

            case R.id.main_layout3:
                mImageview3.setImageResource(R.drawable.tab_transferclick);
                mTextview3.setTextColor(Color.parseColor("#3788de"));
                mTextviewIcon3.setVisibility(View.INVISIBLE);
                mTabHost.setCurrentTabByTag(TabBindingConfig.TRANSFER);
                break;

            case R.id.main_layout4:
                mImageview4.setImageResource(R.drawable.tab_moreclick);
                mTextview4.setTextColor(Color.parseColor("#3788de"));
                mImagIcon4.setVisibility(View.INVISIBLE);
                mTabHost.setCurrentTabByTag(TabBindingConfig.MORE);
                break;
            default:
                break;

                activityGroup绑定
                public static ActivityGroup group;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    group = this;

}

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub

// super.onBackPressed();
//把后退事件交给子Activity处理
group.getLocalActivityManager()
.getCurrentActivity().onBackPressed();
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    //把界面切换放到onResume方法中是因为,从其他选项卡切换回来时,
    //调用搞得是onResume方法

    //要跳转的界面
    Intent intent = new Intent(this, ShareMainActivity.class).
              addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //把一个Activity转换成一个View
    Window w = group.getLocalActivityManager().startActivity("ShareMainActivity",intent);
    View view = w.getDecorView();
    //把View添加大ActivityGroup中
    group.setContentView(view);
}

把第二个tab切换绑定成activitygroup跳转,但是不能实现
求各位大神指点,需要的话我可以把工程发给你

4个回答

zfzlsj1
zfzlsj1   2015.06.11 09:32
已采纳

简单点的 可以看看http://www.cnblogs.com/xinye/archive/2012/08/28/2659712.html。
不过建议还是把这个看完http://blog.csdn.net/lmj623565791/article/details/37970961。
下面是基础的API,这个你必须得知道吧。
Fragment家族常用的API

Fragment常用的三个类:

android.app.Fragment 主要用于定义Fragment

android.app.FragmentManager 主要用于在Activity中操作Fragment

android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~

a、获取FragmentManage的方式:

getFragmentManager() // v4中,getSupportFragmentManager

b、主要的操作都是FragmentTransaction的方法

FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务

transaction.add()

往Activity中添加一个Fragment

transaction.remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。

transaction.replace()

使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~

transaction.hide()

隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.show()

显示之前隐藏的Fragment

detach()

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

attach()

重建view视图,附加到UI上并显示。

transatcion.commit()//提交一个事务

需要注意的是 fragment 不管是 add还是 hide后,都必须要commit后,才提交修改。一般是把一系列add和hide写完后,再commit,但是,要特别注意你commit的时机。

Arnold9009
Arnold9009   2015.06.10 10:39

actvitygroup过时了,用fragment吧,随便换

u013003369
u013003369   2015.06.10 13:21

我是新手,请问怎么在tabhost里面嵌入fragment,有没有一个简单的Demo给我看看

u013003369
u013003369   2015.06.10 13:22

我是新手,请问怎么在tabhost里面嵌入fragment,有没有一个简单的Demo给我看看

Csdn user default icon
上传中...
上传图片
插入图片