zoukankan      html  css  js  c++  java
  • 【Android发展】它Fragment发展1

     

        一直知道Fragment非常强大。可是一直都没有去学习,如今有些空暇的时间,所以就去学习了一下Fragment的简单入门。我也会把自己的学习过程写下来,假设有什么不足的地方希望大牛指正,共同进步。

     

      一、Fragment简单介绍

        1.Fragment作为Activity界面的一部分组成出现;

        2.能够在一个Activity中同一时候出现多个Fragment,而且,一个Fragment亦可在多个Activity中使用;

        3.在Activity执行过程中,能够加入、移除或者替换Fragment(add()、remove()、replace());

        4.Fragment能够响应自己的输入事件,而且有自己的生命周期,当然。它们的生命周期直接被其所属的activity的生命周期影响。

        那我们为什么要用Fragment呢?主要目的是用在大屏幕设备上--比如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有很多其它的空间来放很多其它的UI组件,而且这些组件之间会产生很多其它的交互。我们能够把Fragment觉得是“小的Activity”。Fragment更加简洁。

     

     

      二、Fragment的简单使用

        那我们就简单的显示2个Fragment为例来解说一下。

        

        1.在XML中加入Fragment:

          新建Fragment1、Fragment2(注意:这里可能有2个包能够选择导入android.app.Fragment或android.support.v4.app.Fragment都是能够的,我这里选择使用了前者。可是两者使用时有差别的,在结尾中我会讲到):


          Fragment1代码:
    package com.example.fragment;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.fragmentdemo.R;
    
    public class Fragment1 extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            Log.e("TAG", "in");
            return inflater.inflate(R.layout.fragment1, container, false);
        }
    }

          Fragment2代码:
    package com.example.fragment;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.fragmentdemo.R;
    
    public class Fragment2 extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment2, container, false);
        }
    }

          Fragment1的xml代码:
    <?

    xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF69B4" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="这是第一个Fragment" /> </LinearLayout>

          Fragment2的xml代码:
    <?xml version="1.0" encoding="utf-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#EECBAD" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="这是第二个Fragment" /> </LinearLayout>

          我们在activity_main.xml中加入两个Fragment。代码例如以下:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false" >
    
        <fragment
            android:id="@+id/fragment1"
            android:name="com.example.fragment.Fragment1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    
        <fragment
            android:id="@+id/fragment2"
            android:name="com.example.fragment.Fragment2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    
    </LinearLayout>

          MainActivity代码例如以下:
    package com.example.fragmentdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

          然后执行project就能够显示Fragment了。以下是效果图。

        

           

        2.动态加入Fragment:

          我们仅仅须要改动MainActivity和activity_main.xml中的代码就能够了。

          activity_main.xml代码:                 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="vertical" >
    
        <LinearLayout
            android:id="@+id/main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />
    
    </LinearLayout>

           MainActivity代码:
    package com.example.fragmentdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    import com.example.fragment.Fragment1;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            getFragmentManager().beginTransaction()
                    .replace(R.id.main, new Fragment1()).commit();
        }
    }

          然后执行project就能够动态的显示Fragment了,以下是效果图。

     

    三、app包下和V4包下的Fragment的差别

    1、尽量不要用app包中的fragment。由于这个是在3.0之后才有的,支持的版本号太高,在低版本号中是是用不了的;

        2、android.support.v4.app.Fragment:能够兼容到1.6的版本号

        3、关于这两个fragment使用<fragment>标签的问题:

        (1)app.fragment和v4.fragment都是能够使用<fragment>标签的仅仅是在在使用的时候假设是app.fragment则没有什么特殊的地方继承Activity就可以。

        (2)当v4.fragment使用<fragment>标签的时候就要特别注意了:当这个Activity的布局中有<fragment>标签的时候,这个Activity必须继承FragmentActivity,否则就会报错。

    此时假设不卜继成FragmentActivity的话 编译系统会把<fragment>觉得是app包中的Fragment来处理。可是此时我们导入的是v4包中的FragmentAndroid官方文档中的Fragment的样例就是以app包中的Fragment来解说的。

                (3)app包中关于Fragment的类和方法在V4包中都是有相应的相应的。

        转载自:http://blog.csdn.net/a465456465/article/details/10415211,感谢。



        上面就是Fragment的简单用法,Demo下载,下一节我会讲Fragment的具体使用。欢迎关注。我的博客园地址:http://www.cnblogs.com/getherBlog/p/3943547.html

     


  • 相关阅读:
    后台跨域(CORS)
    后台跨域(CORS)
    Spring MVC中forward请求转发2种方式(带参数)
    Spring MVC中forward请求转发2种方式(带参数)
    Spring MVC中forward请求转发2种方式(带参数)
    MyEclipse使用总结——MyEclipse去除网上复制下来的来代码带有的行号
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4568304.html
Copyright © 2011-2022 走看看