1210817109 2015-06-10 01:34 采纳率: 0%
浏览 1742
已采纳

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条回答

  • 大西瓜M 2015-06-11 01: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的时机。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流