2012-05-07 46 views
4

我開始理解Android碎片,但這仍然讓我感到困惑。我需要一點幫助。正如它所說的,從API級別11開始支持android片段,但是您可以下載用於較低級別API的「support.v4」庫文件包。那麼首先我創建一個新的項目來測試API級別15的片段。然後我做了與API級別8相同的操作,它不起作用...我導入了外部jar,它看到了所有需要的導入,因爲它應該...什麼似乎是這裏的問題嗎?較低的API上的Android碎片

這裏是我的主類:

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 

public class Fragment2Activity extends FragmentActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

我主要佈局XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 

     <fragment 
    android:name="com.frag.Fragment2.frag" 
    android:id="@+id/frag" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 

我的片段類:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class frag extends Fragment { 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      // Inflate the layout for this fragment 
      View v = inflater.inflate(R.layout.hello_fragment, container, false); 
      return v; 
     } 
    } 

我的片段佈局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:orientation="vertical" > 
    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:text="THIS IS FRAGMENT" 
    android:background="@drawable/ic_launcher" 
/> 

</LinearLayout> 

FIXED

+1

您是否得到了正常的工作?我有同樣的問題,你的修復是什麼? – MikeIsrael

回答

6

您還在使用android.view.fragment類,它不存在。您必須在舊設備上切換到android.support.v4.app.fragment

+1

它實際上'android.support.v4.app.Fragment',我正在使用它;/ –

+0

顯然不是無處不在:'ClassNotFoundException:android.view.fragment' – Jave

+0

這是我的片段類導入...;/ '導入android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view。ViewGroup;' –

0

如果由於minSdkVersion而使用較低的API,則應該知道可以使用最新的sdk並將minSdkVersion設置爲較低的值。他們不一定是一樣的。

+0

如果我這樣做,我仍然無法運行它在Android模擬器2.2但我仍然可以在4.0.3我改變在清單'<使用sdk android:minSdkVersion =「4」 \t \t android:targetSdkVersion =「15」/> –

0

好吧,我有同樣的問題,並最終得到它的工作。首先確保你有最新的ADT工具。

1)進入使用碎片每一次活動,讓他們從FragmentActivity而不是擴展Activity

2)如果你還沒有導入支持庫到您的構建,上然後用鼠標右鍵單擊您的項目 - > Android的工具 - >添加支持庫

3)請確保您的XML標籤是<fragment />而不是<android.support.v4.app.fragment />

希望可以幫助你,帶我一段時間才能得到它的工作。

0

實際上,這個問題來自ADT工具。

  1. 重新排序在Java中的 「排序和導出」,由 來源>根>私人>其他...

  2. 添加支持庫>> Android的支持,v4.jar

    構建路徑