片段越来越重叠的另一片段 [英] Fragment getting overlapped on another fragment
问题描述
我知道有关于公布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屋!