2011-11-23 4 views
16

次のコードでruntimeExceptionが発生しています。RuntimeException:クラスフラグメントを拡張するエラー

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

SuggestionFragsクラス

public class SuggestionFrags extends Fragment{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

} 

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" > 

    <fragment 
     android:id="@+id/fragment1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     class="com.samplefragsapplication.SuggestionFrags" /> 

</LinearLayout> 

私はこの例外を取得しています:

11-23 18:09:23.899: E/AndroidRuntime(2436): FATAL EXCEPTION: main 
11-23 18:09:23.899: E/AndroidRuntime(2436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.samplefragsapplication/com.samplefragsapplication.FragsApplicationActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.os.Looper.loop(Looper.java:123) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at dalvik.system.NativeStart.main(Native Method) 
11-23 18:09:23.899: E/AndroidRuntime(2436): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.Activity.setContentView(Activity.java:1647) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at com.samplefragsapplication.FragsApplicationActivity.onCreate(FragsApplicationActivity.java:12) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-23 18:09:23.899: E/AndroidRuntime(2436): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.samplefragsapplication-2.apk] 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.createView(LayoutInflater.java:466) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
11-23 18:09:23.899: E/AndroidRuntime(2436):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
+0

をお試しください –

+0

1行ではなく、LogCatからスタックトレース全体を投稿できますか? – kaspermoerch

答えて

4

正しいフォームが

になります
<fragment 
    android:id="@+id/fragment1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:name="com.samplefragsapplication.SuggestionFrags" /> 

UPD:logcat出力で判断すると、利用可能なフラグメントがありません。ハニカム前のアンドロイド(1.6以上)を使用している場合は、compatibility libraryを使用できます。フラグメントは3.0で導入されました。

+0

私もこれを試しました..しかし、私はget.sameの例外をdidntしました。 – user977808

+0

私は互換性ライブラリを使用しています。私はminSdkVersion = "7"を設定しました。しかしそれでも問題は解決しません。 –

13

Fragmentsを使用する場合は、FragmentActivityActivityに拡張する必要があります。

+4

これは、互換性ライブラリが使用されている場合にのみ有効です。 –

2

私はちょうど同じ問題があったが、私が見つけた私のmain.xmlに私が間違ってフラグメントのクラスを参照したということでした。

<fragment android:id="@+id/frag_capt" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.company.test.applicationname.fragmentname" /> 

試し:代わりの

<fragment android:id="@+id/frag_capt" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.company.test.DetailFrag" /> 

これは私のために問題を修正しました。 幸運。あなたはFragsApplicationActivityに代わり活動のFragmentActivityから延びているしなければならない。この問題を解決するには

+0

私はそれを試みましたが、それは私の問題を解決しませんでした。 –

+0

私のために完全に働いた。ありがとう!!!!! – cw1998

3

例外android.view.InflateException: Binary XML file line: #... Error inflating class fragmentは、onActivityCreated()が呼び出される前にフラグメント内でgetActivity()を操作すると発生する可能性があります。そのような場合、間違った活動参照を受け取り、それに頼ることはできません。

例えば次のパターンが間違っている:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
{ 
    final View view = inflater.inflate(R.layout..., container, false); 

    Button button = getActivity().findViewById(R.id...); 
    button.setOnClickListener(...); - another problem: button is null 

    return view; 
} 
+0

これを克服する方法は? – Mani

+1

@Mani http://stackoverflow.com/a/15137231/1338803 –

0

は確かにアンドロイドを行います。name = "classNameは" リストの最初のパラメータである

<fragment 
    android:name="com.name.first" 
    android:id="@+id/" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 
0

私が持っていました同じ問題が、要約する:

  • がFragmentActivity
  • あなたのレイアウトでは、この構造に従ってください

    <fragment 
        android:id="@+id/map" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:name="com.google.android.gms.maps.MapFragment" 
    /> 
    
1

から拡張すると、例外は何ですか?この

<fragment 
     android:id="@+id/fragment1" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" /> 
関連する問題