android.app.FragmentManager和android.support.v4.app.FragmentManager

Fragment是activity的界面中的一部分或一種行爲。你可以把多個Fragment們組合到一個activity中來創建一個多面界面並且你可以在多個activity中重用一個Fragment。你可以把Fragment認爲模塊化的一段activity,它具有自己的生命週期,接收它自己的事件,並可以在activity運行時被添加或刪除。

        一個好的帖子:http://my.oschina.net/u/270164/blog/85347。

        使用Fragment的包爲android.app.FragmentManager,但是由於其對3.0下版本不兼容,所以要 引入android.support.v4.app.FragmentManager 兩個包對Fragment相同方法的定義有所不同,因此在import時,經常容易混淆導致程序報錯,下面就來總結下:

       1、編譯無錯誤,運行時報錯:android.view.InflateException: Binary XML file line #7: Error inflating class fragment

出現了上述錯誤,原因往往是你在某個.xml文件使用了<fragment>標籤,但對應的xx.java文件中import的卻是android.support.v4.app.Fragment。android.support.v4.app.Fragment:可以兼容到1.6的版本,不能使用<fragment>標籤,需要在程序中通過add或者replace的方式添加。

       2、編譯錯誤:

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentTransaction;

public class MainActivity extends FragmentActivity {

    public static FragmentManager childFm;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        childFm=getSupportFragmentManager();

        FragmentTransaction ft=childFm.beginTransaction();

        Frag1 f1=new Frag1();

        ft.add(f1,"第一").commit();

代碼如上,在add處提示:The method add(Fragment, String) in thetype FragmentTransaction is not applicable for the arguments (Frag1, String)。

原因:我的Frag1.java中,import的包是 android.app.Fragment所以報錯。改成import android.support.v4.app.Fragment;就好了。

3、此外,在調用Activity時,包爲 android.support.v4.app.FragmentActivity的類,都extends的是FragmentActivity而不是Activity。

發佈了1 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章