以下程序要实现的是在主界面activity_main界面中嵌入两个按钮,通过点击按钮进行调用两个Fragment中的内容,通常用于手机底部按钮的设置
首先在Layout布局文件中创建两个Fragment文件,命名分别为Fragment_me和Fragment_product在布局文件中进行了自己需要的布局内容,当然Layout布局文件下面还有创建Android时生成的activity_main布局文件,在activity_main中代码如下:
1、动态添加:
<Button
android:id="@+id/main_btn_product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商品" />
<Button
android:id="@+id/main_btn_me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我" />
<!-- Fragment的容器 -->
<span style="white-space:pre"> </span><FrameLayout
<span style="white-space:pre"> </span>android:id="@+id/main_fragmentcontainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
</FrameLayout>
其次在src目录下创建一个Fragment的包,在Fragment包中分别创建两个Fragment对应的java文件(几乎类似Activity)分别命名为MyFragement和ProductFragment与上面创建的两个Layout布局文件相对应
ProductFragment.java中代码:
public class ProductFragment extends Fragment{
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(rootView == null){
rootView = inflater.inflate(R.layout.fragment_product, container, false);
}
ViewGroup par = (ViewGroup) rootView.getParent();
if(par != null){
par.removeView(rootView);
}
return rootView ;
}
}
MyFragment.java中的代码:
<pre name="code" class="java">public class MyFragment extends Fragment implements OnClickListener{
private View rootView ; //Fragment 的layout文件中的根文件
private ImageView iv ;
private Button btnGallery ,btnCamera ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(rootView == null){
rootView = inflater.inflate(R.layout.fragment_me, container, false) ;
initView(rootView);
}
ViewGroup par = (ViewGroup) rootView.getParent() ;
if(par != null){
par.removeView(rootView) ;
}
return rootView ;
}
private void initView(View rootView2) {
iv = (ImageView) rootView.findViewById(R.id.me_iv_photo) ;
btnGallery = (Button) rootView.findViewById(R.id.gallery) ;
btnCamera = (Button) rootView.findViewById(R.id.camera) ;
btnGallery.setOnClickListener(this) ;
btnCamera.setOnClickListener(this) ;
}
public void onClick(View v) {
switch(getId()){
case R.id.gallery :
break ;
case R.id.camera :
break ;
}
}
}
最后是在MainActivity文件中通过添加Fragment容器,通过容器引用fragment_me和fragment_product两个布局,就能在MainActivity对应的activity_main中显示,代码如下:
<pre name="code" class="java">public class MainActivity extends FragmentActivity implements OnClickListener {
Fragment productFragment, myFragment ;
Button my, pro ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
setContentView(R.layout.activity_main) ;
productFragment = new ProductFragment() ;
myFragment = new MyFragment() ;
//添加一个Fragment到容器
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, productFragment).commit() ;
//获取控件
my = (Button) findViewById(R.id.my) ;
pro = (Button) findViewById(R.id.product) ;
my.setOnClickListener( this) ;
pro.setOnClickListener( this) ;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my :
//添加一个Fragment到容器
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, myFragment).commit() ;
break ;
case R.id.product :
//添加一个Fragment到容器
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, productFragment).commit() ;
break ;
}
}
}
2、静态添加方式:在Activity的layout中添加Fragment(知识这个地方不同)
<span style="white-space:pre"> </span><fragment
android:name = "com.rounding.fragment.MyFragment"
android:layout_width="wrap_content"
android:layout_height="300dp"
</fragment>