您的位置:首页 > 其它

Fragment的创建、动态绑定、静态绑定

2015-08-14 11:47 411 查看
以下程序要实现的是在主界面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>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: