我正在創建一個包含一個片段的三個選項卡,現在我想用同一個選項卡中的一個新片段替換第一個Tab的片段。我怎樣才能做到這一點與標籤保持不變?如何在單個選項卡中顯示新的片段?
我的代碼 -
Tab_Widget.java
public class Tab_Widget extends TabActivity {
TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_host);
tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec("Tab1")
.setIndicator("Tab1")
.setContent(new Intent().setClass(this, main_activity.class)));
tabHost.addTab(tabHost.newTabSpec("Tab2")
.setIndicator("Tab2")
.setContent(new Intent().setClass(this, second_activity.class)));
tabHost.addTab(tabHost.newTabSpec("Tab3")
.setIndicator("Tab3")
.setContent(new Intent().setClass(this, third_activity.class)));
tabHost.setCurrentTab(0);
}
}
main_activity.java
public class main_activity extends FragmentActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainfragment);
}
}
main_fragment.java
public class main_fragment extends Fragment
{
LinearLayout mLayout;
Button mButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mLayout = (LinearLayout) inflater.inflate(R.layout.main_view, null);
mButton = (Button) mLayout.findViewById(R.id.btn);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment mFragment = new third_fragment_view();
FragmentTransaction ft = getFragmentManager().beginTransaction();
// ft.replace(R.id.Maincontainer, mFragment);
ft.replace(R.id.main_fragment, mFragment);
ft.addToBackStack(null);
ft.commit();
}
});
return mLayout;
}
}
我的XML
mainfragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Maincontainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.fragment.main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_fragment">
</fragment>
</LinearLayout>
通過,該片段是獲取調用毫無疑問的,但一世與前面的片段重疊。
@Greame我只是想更換一個片段,片段內不片段。 –
你的錯誤理解。你正在使用一個片段來取代它自己。在最好的情況下,這是令人困惑和糟糕的做法,最糟糕的是它永遠不會工作(不幸的是,片段不是最透明的過程)。創建一個系統,其中一個片段與它的容器進行通信,讓它用其他東西替換它的孩子。 – Graeme
是的,現在我明白了Fragments無法取代它自己,謝謝。 :) –