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

本文介绍如何在Android应用中使用Fragment。通过在activity_main布局中添加两个按钮,点击按钮可以切换到Fragment_me和Fragment_product,分别展示不同的内容。在布局文件中创建Fragment,然后在Java代码中创建对应的Fragment类,并在MainActivity中动态和静态添加到Fragment容器,实现在主界面切换显示不同Fragment的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下程序要实现的是在主界面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> 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值