1. 程式人生 > >FragmentActivity呼叫add方法報錯

FragmentActivity呼叫add方法報錯

importandroid.app.Fragment;

 改為

import android.support.v4.app.Fragment

首先需要匯入android-support-v4.jar包,方法見下:

進入Android\sdk\extras\android\support\v4,將其中的android-support-v4.jar複製,拷貝到android專案的app/libs下,右鍵點選jar檔案,點選Add As Library,ok。

(1)在自定義fragment類時必須繼承android-support-v4下的fragment,而不是android.app.fragment。

(2)Activity檔案中繼承的是android-support-v4下的fragmentActivity(ps:v4中沒有activity類)。

重點來了,當使用

getFragmentManager().beginTransaction().add(R.id.container,new Fragment()).commit();

來給佈局載入fragment時,add方法會報錯。

這是因為v4包中的fragment並沒有使用getFragmentManager()這個方法,而是使用了getSupportFragmentManager(),而前者只在android.app.activity中有定義,此時將上述載入語句改為:

getSupportFragmentManager().beginTransaction().add(R.id.container,new Fragment).commit();
即可通過

以下內容轉載自:http://www.xuebuyuan.com/2122132.html

android.support.v4.app.Fragment和android.app.Fragment區別

1.最低支援版本不同

android.app.Fragment 相容的最低版本是android:minSdkVersion="11" 即3.0版

android.support.v4.app.Fragment 相容的最低版本是android:minSdkVersion="4" 即1.6版

2.需要導jar包

fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar

3.在Activity中取的方法不同

android.app.Fragment使用 (ListFragment)getFragmentManager().findFragmentById(R.id.userList)  獲得  ,繼承Activity

android.support.v4.app.Fragment使用 (ListFragment)getSupportFragmentManager().findFragmentById(R.id.userList) 獲得 ,需要繼承android.support.v4.app.FragmentActivity