Android,activity托管fragment的方式

activity托管fragment的方式

在activity托管一个UI fragment,有2种方式

1、添加fragment到activity布局中;

2、在activity代码中添加fragment(唯一一种可以在运行时控制fragment的方式)


方式一:添加fragment到activity布局中

修改activity布局文件(activity_hello_moon.xml)如下:

步骤1:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/helloMoonFragment" android:layout_width="match_parent" android:layout_height="match_parent"
     android:name="com.example.q.tinaxu.hellomoon.HelloMoonFragment">   //(新增)
</RelativeLayout>
</fragment>

步骤2:

修改HelloMoonActivity类的超类为FragmentActivity

public class HelloMoonActivity extends Activity {
public class HelloMoonActivity extends FragmentActivity {
 
注:在Android Studio中(maybe跟Android API有关)activity父类为 AppCompatActivity(是FragmentActivity的子类) 
public class AppCompatActivity extends FragmentActivity implements AppCompatCallback,
        TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider {
 

方式二:在activity代码中添加fragment

在代码中添加fragment,需要借助于FragmentManager类,在被托管的activity中,包含FragmentManager类,FragmentManager类负责管理fragment并将它们的视图添加到activity的视图层级结构中。

FragmentManager fm = getFragmentManager();

Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if(fragment == null)

{

fragment = new CrimeFragment();

fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();

}


使用布局fragment的缺点:

1、可覆盖fragment的生命周期方法,以响应各种事件。但无法控制调用这些方法的时机。

2、无法提交移除、替换、分离布局fragment的事务。activity被创建后,即无法做出任何改变。

3、无法附加argument给fragment。附加argument必须的fragment创建后,并且被添加给FragmentManager之前完成。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值