TabHost是一个过时的类,它的功能可以由Fragment来实现。
FragmentTransaction对fragment进行添加,移除,替换,以及执行其他动作。
从 FragmentManager 获得一个FragmentTransaction的实例
:
FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();
一个小实例:
MainFragment.java
public class MainFragment extends Activity implements OnClickListener{
private Button first, second, third;
private FrameLayout fl;
private FirstFragment ff;
private SecondFragment sf;
private ThirdFragment tf;
@Override
protected void onCreate(Bundle savedInstanceState){
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
first = (Button)findViewById(R.id.first_btn);
second = (Button)findViewById(R.id.second_btn);
third = (Button)findViewById(R.id.third_btn);
fl = (FrameLayout)findViewById(R.id.fl);
first.setOnClickListener(this);
second.setOnClickListener(this);
third.setOnClickListener(this);
ff = new FirstFragment();
sf = new SecondFragment();
tf = new ThirdFragment();
}
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.first_btn:
switchFragment(R.id.fl, ff);
break;
case R.id.second_btn:
switchFragment(R.id.fl, sf);
break;
case R.id.third_btn:
switchFragment(R.id.fl, tf);
break;
default:
break;
}
}
public void switchFragment(int id, Fragment fragment){
try{
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(id, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
ft.commit();// 提交
}
catch (Exception e){
e.printStackTrace();
}
}
}
FirstFragment.java,SecondFragment、ThirdFragment代码相似
public class FirstFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState){
// TODO Auto-generated method stub
View fragmentView = inflater.inflate(R.layout.first, null);
return fragmentView;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/first_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="first"/>
<Button
android:id="@+id/second_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="second"/>
<Button
android:id="@+id/third_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="third"/>
</LinearLayout>
<FrameLayout
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
first.xml,second.xml,third.xml代码相似,当然可自行布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/blue">
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/win"/>
</LinearLayout>
效果截图:
