您的位置:首页 > 移动开发 > Android开发

Android,activity托管fragment的方式

2015-11-23 13:56 513 查看
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之前完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: