I am getting error everytime when I run my Fragment API example application. It is referenced from Android Developers Guide http://developer.android.com/reference/android/app/Fragment.html. I don't know how it returns the error and why? Please suggest anything you see that will get me the right result.
Error Stack:
01-03 11:54:55.255: E/AndroidRuntime(363): FATAL EXCEPTION: main
01-03 11:54:55.255: E/AndroidRuntime(363): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragment/com.example.fragment.FragmentExampleActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.os.Handler.dispatchMessage(Handler.java:99)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.os.Looper.loop(Looper.java:126)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread.main(ActivityThread.java:3997)
01-03 11:54:55.255: E/AndroidRuntime(363): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 11:54:55.255: E/AndroidRuntime(363): at java.lang.reflect.Method.invoke(Method.java:491)
01-03 11:54:55.255: E/AndroidRuntime(363): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
01-03 11:54:55.255: E/AndroidRuntime(363): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
01-03 11:54:55.255: E/AndroidRuntime(363): at dalvik.system.NativeStart.main(Native Method)
01-03 11:54:55.255: E/AndroidRuntime(363): Caused by: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
01-03 11:54:55.255: E/AndroidRuntime(363): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:224)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Activity.setContentView(Activity.java:1777)
01-03 11:54:55.255: E/AndroidRuntime(363): at com.example.fragment.FragmentExampleActivity.onCreate(FragmentExampleActivity.java:11)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
01-03 11:54:55.255: E/AndroidRuntime(363): ... 11 more
01-03 11:54:55.255: E/AndroidRuntime(363): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.fragment$TitlesFragment: make sure class name exists, is public, and has an empty constructor that is public
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Fragment.instantiate(Fragment.java:500)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Fragment.instantiate(Fragment.java:468)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Activity.onCreateView(Activity.java:4081)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)
01-03 11:54:55.255: E/AndroidRuntime(363): ... 20 more
01-03 11:54:55.255: E/AndroidRuntime(363): Caused by: java.lang.ClassNotFoundException: com.example.fragment$TitlesFragment in loader dalvik.system.PathClassLoader[/data/app/com.example.fragment-1.apk]
01-03 11:54:55.255: E/AndroidRuntime(363): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
01-03 11:54:55.255: E/AndroidRuntime(363): at java.lang.ClassLoader.loadClass(ClassLoader.java:548)
01-03 11:54:55.255: E/AndroidRuntime(363): at java.lang.ClassLoader.loadClass(ClassLoader.java:508)
01-03 11:54:55.255: E/AndroidRuntime(363): at android.app.Fragment.instantiate(Fragment.java:490)
01-03 11:54:55.255: E/AndroidRuntime(363): ... 23 more
layout-land/fragment_layout.xml:
<fragment class="com.example.fragment$TitlesFragment"
android:id="@+id/titles" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent" />
<FrameLayout android:id="@+id/details" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
layout/fragment_layout.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment class="com.example.fragment$TitlesFragment"
android:id="@+id/titles"
android:layout_width="match_parent" android:layout_height="match_parent" />
</FrameLayout>
Check this out.
make sure class name exists, is public, and has an empty constructor that is public
All subclasses of Fragment must include a public empty constructor. The framework will often re-instantiate a fragment class when needed, in particular during state restore, and needs to be able to find this constructor to instantiate it. If the empty constructor is not available, a runtime exception will occur in some cases during state restore.
Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.fragment$TitlesFragment: make sure class name exists, is public, and has an empty constructor that is public
Also make sure that your fragment class is public
public class MyFragment extends Fragment
when declaring your fragment class. Also, you shouldn't have any constructor in the class. So make sure that you don't have one.
You need to have the fragment name field as
<fragment
android:name="my.package.name.classname"
//other stuff
/>
rather than just putting the name of the class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With