片段越来越重叠的另一片段 [英] Fragment getting overlapped on another fragment

查看:196
本文介绍了片段越来越重叠的另一片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道有关于公布SO 各种问题相关的问题,但他们没有提供解决方案给我。我在片段活动 4个标签,每个标签都有自己的片段。我将到另一个片段里面。当我切换到标签有时越来越重叠,两者都是可见的。

下面是code(XML):


 <按钮
    机器人:ID =@ + ID / checkBal
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =45dp
    机器人:可点击=假
    机器人:重力=左| center_vertical
    机器人:字体=衬/><查看
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =2DP
    机器人:layout_marginLeft =5DP
    机器人:layout_marginRight =5DP
    机器人:layout_marginTop =2DP
    机器人:背景=@色/绿色/><的FrameLayout
    机器人:ID =@ + ID / realtabcontent
    机器人:layout_width =match_parent
    机器人:layout_height =0dip
    机器人:layout_weight =1/>< android.support.v4.app.FragmentTabHost
    机器人:ID =@机器人:ID / tabhost
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT>    <的FrameLayout
        机器人:ID =@机器人:ID / tabcontent
        机器人:layout_width =0dp
        机器人:layout_height =0dp
        机器人:layout_weight =0/>
< /android.support.v4.app.FragmentTabHost>

 公共类Tab_Activity扩展FragmentActivity {FragmentTabHost mHost;
按钮的平衡;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.tabs);    余额=(按钮)findViewById(R.id.checkBal);
    mHost =(FragmentTabHost)findViewById(android.R.id.tabhost);
    mHost.setup(这一点,getSupportFragmentManager(),R.id.realtabcontent);    mHost.addTab(mHost.newTabSpec(家)。setIndicator(家),
            Home_Fragment.class,NULL);
    mHost.addTab(mHost.newTabSpec(编号)。setIndicator(发送到号码),
            Number_Fragment.class,NULL);
    mHost.addTab(
            mHost.newTabSpec(联系方式)。setIndicator(发送到联系人),
            Contact_Fragment.class,NULL);
    mHost.addTab(mHost.newTabSpec(「本集团」)。setIndicator(发送到组),
            Group_Fragment.class,NULL);    mHost.setOnTabChangedListener(新OnTabChangeListener(){        @覆盖
        公共无效onTabChanged(字符串tabId){
            // TODO自动生成方法存根            如果(tabId.equalsIgnoreCase(家)){                Home_Fragment家=新Home_Fragment();                FragmentManager经理= getSupportFragmentManager();
                FragmentTransaction英尺= manager.beginTransaction();
                ft.replace(R.id.realtabcontent,家庭,家庭);
                ft.commit();            }            如果(tabId.equalsIgnoreCase(数字)){                Number_Fragment数=新Number_Fragment();                FragmentManager经理= getSupportFragmentManager();
                FragmentTransaction英尺= manager.beginTransaction();
                ft.replace(R.id.realtabcontent,数字,号码);
                ft.commit();            }
            如果(tabId.equalsIgnoreCase(联系方式)){                Contact_Fragment接触=新Contact_Fragment();                FragmentManager经理= getSupportFragmentManager();
                FragmentTransaction英尺= manager.beginTransaction();
                ft.replace(R.id.realtabcontent,接触,联系方式);
                ft.commit();
            }            如果(tabId.equalsIgnoreCase(「本集团」)){                Group_Fragment组=新Group_Fragment();                FragmentManager经理= getSupportFragmentManager();
                FragmentTransaction英尺= manager.beginTransaction();                ft.replace(R.id.realtabcontent,组,集团);
                ft.commit();
            }        }
    });}
公共无效newFragment(片段片段,字符串变量){    FragmentManager经理= getSupportFragmentManager();
    FragmentTransaction英尺= manager.beginTransaction();
    //
    如果(tag.equalsIgnoreCase(「本集团」))
        ft.remove(新Group_Fragment());
    其他
        ft.remove(新Contact_Fragment());
    ft.replace(R.id.realtabcontent,片段);
    ft.addToBackStack(NULL);
    ft.commit();}公共无效updateContacts(ArrayList的<串GT; CLIST){    FragmentManager经理= getSupportFragmentManager();    Contact_Fragment contactFrag =(Contact_Fragment)经理
            .findFragmentByTag(联系方式);
    contactFrag.updateData(CLIST);} }

里面的新片段调用片段

  mActivity.newFragment(新Select_Group_Fragment(),「本集团」);

因为我从另一个片段我需要添加调用片段 addToBackStack 新片段 Tab_Activity

请帮家伙


解决方案

  layout.removeAllViews();

用此办法除去previous视图

I know there are various question posted on SO related to the question but none of them provides solution to me. I've 4 tabs in fragment activity and each tab has its own fragment. I am going into another fragment inside it. When i switch to tabs sometimes it getting overlapped and both are visible.

Here is the code(xml) :

<Button
    android:id="@+id/checkBal"
    android:layout_width="fill_parent"
    android:layout_height="45dp"
    android:clickable="false"
    android:gravity="left|center_vertical"
    android:typeface="serif" />

<View
    android:layout_width="fill_parent"
    android:layout_height="2dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="2dp"
    android:background="@color/green" />

<FrameLayout
    android:id="@+id/realtabcontent"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1" />

<android.support.v4.app.FragmentTabHost
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="0" />
</android.support.v4.app.FragmentTabHost>

public class Tab_Activity extends FragmentActivity {

FragmentTabHost mHost;
Button balance;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabs);

    balance = (Button) findViewById(R.id.checkBal);
    mHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
    mHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    mHost.addTab(mHost.newTabSpec("Home").setIndicator("Home"),
            Home_Fragment.class, null);
    mHost.addTab(mHost.newTabSpec("Number").setIndicator("Send to number"),
            Number_Fragment.class, null);
    mHost.addTab(
            mHost.newTabSpec("Contact").setIndicator("Send to contacts"),
            Contact_Fragment.class, null);
    mHost.addTab(mHost.newTabSpec("Group").setIndicator("Send to groups"),
            Group_Fragment.class, null);

    mHost.setOnTabChangedListener(new OnTabChangeListener() {

        @Override
        public void onTabChanged(String tabId) {
            // TODO Auto-generated method stub

            if (tabId.equalsIgnoreCase("Home")) {

                Home_Fragment home = new Home_Fragment();

                FragmentManager manager = getSupportFragmentManager();
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.realtabcontent, home, "Home");
                ft.commit();

            }

            if (tabId.equalsIgnoreCase("Number")) {

                Number_Fragment number = new Number_Fragment();

                FragmentManager manager = getSupportFragmentManager();
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.realtabcontent, number, "Number");
                ft.commit();

            }
            if (tabId.equalsIgnoreCase("Contact")) {

                Contact_Fragment contact = new Contact_Fragment();

                FragmentManager manager = getSupportFragmentManager();
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.realtabcontent, contact, "Contact");
                ft.commit();
            }

            if (tabId.equalsIgnoreCase("Group")) {

                Group_Fragment group = new Group_Fragment();

                FragmentManager manager = getSupportFragmentManager();
                FragmentTransaction ft = manager.beginTransaction();

                ft.replace(R.id.realtabcontent, group, "Group");
                ft.commit();
            }

        }
    });

}




public void newFragment(Fragment fragment, String tag) {

    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();
    //
    if (tag.equalsIgnoreCase("Group"))
        ft.remove(new Group_Fragment());
    else
        ft.remove(new Contact_Fragment());
    ft.replace(R.id.realtabcontent, fragment);
    ft.addToBackStack(null);
    ft.commit();

}

public void updateContacts(ArrayList<String> cList) {

    FragmentManager manager = getSupportFragmentManager();

    Contact_Fragment contactFrag = (Contact_Fragment) manager
            .findFragmentByTag("Contact");
    contactFrag.updateData(cList);

}

 }

Calling fragment inside new fragment

mActivity.newFragment(new Select_Group_Fragment(), "Group");

As i am calling fragment from another fragment i need to add addToBackStack in new fragment method in Tab_Activity

Please help guys

解决方案

layout.removeAllViews();

use this to remove previous view

这篇关于片段越来越重叠的另一片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆