Reputation: 3627
I have worked towards creating the simplest project I can which cause me problem. I originally thought this was a maps problem until I realized it was probably a general (support library?) fragments problem. (I have tried running this code on my SGII v4.1.2)
Java code:
package com.example.testapp;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MSMap extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msmap);
}
}
XML layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<fragment
android:id="@+id/themap"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
Above give this error with "error inflating":
03-09 12:06:56.850: E/AndroidRuntime(891): FATAL EXCEPTION: main 03-09 12:06:56.850: E/AndroidRuntime(891): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testapp/com.example.testapp.MSMap}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread.access$700(ActivityThread.java:140) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.os.Handler.dispatchMessage(Handler.java:99) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.os.Looper.loop(Looper.java:137) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread.main(ActivityThread.java:4921) 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.reflect.Method.invokeNative(Native Method) 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.reflect.Method.invoke(Method.java:511) 03-09 12:06:56.850: E/AndroidRuntime(891): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 03-09 12:06:56.850: E/AndroidRuntime(891): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 03-09 12:06:56.850: E/AndroidRuntime(891): at dalvik.system.NativeStart.main(Native Method) 03-09 12:06:56.850: E/AndroidRuntime(891): Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 03-09 12:06:56.850: E/AndroidRuntime(891): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.Activity.setContentView(Activity.java:1924) 03-09 12:06:56.850: E/AndroidRuntime(891): at com.example.testapp.MSMap.onCreate(MSMap.java:23) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.Activity.performCreate(Activity.java:5206) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 03-09 12:06:56.850: E/AndroidRuntime(891): ... 11 more 03-09 12:06:56.850: E/AndroidRuntime(891): Caused by: java.lang.NullPointerException: name == null 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.VMClassLoader.findLoadedClass(Native Method) 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354) 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.ClassLoader.loadClass(ClassLoader.java:491) 03-09 12:06:56.850: E/AndroidRuntime(891): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.support.v4.app.Fragment.instantiate(Fragment.java:391) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.support.v4.app.Fragment.instantiate(Fragment.java:369) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272) 03-09 12:06:56.850: E/AndroidRuntime(891): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 03-09 12:06:56.850: E/AndroidRuntime(891): ... 21 more
Is there somehow a mismatch between code and XML?
Under all circumstances, I have tried all example I could think and/or Google my way to. All resulting in the same error.
Note: I have android-support-v4.jar in "References Libraries" and "Android Dependencies" and "Libs" in my project.
Upvotes: 3
Views: 3040
Reputation: 2928
Finally i got answer for your question
A Fragment works much like an activity, in that you need a Java class file to go with it. you cannot create a Fragment just by creating a fragment layout - you need a class for your fragment:
Create a layout XML and an Activity subclass for your activity Create a layout XML and a Fragment subclass for your fragment Tie the two together in your Activity layout XML (or using FragmentTransaction if you want to do it in Java code) If you haven't already done so, read, re-read and digest everything on this page: http://developer.android.com/guide/topics/fundamentals/fragments.html
There's a lot there, but Fragments are an essential part of Android apps now so it's required reading. The good news is that the basics of fragments is pretty simple.
So you need to have a class like this
<fragment
class="com.exercise.FragmentTest.MyFragment"
Upvotes: 3
Reputation: 10395
You didn't sepcify the name for your Fragment , you should provide your fragment class in name attribute for your fragment
like code below :
<fragment
android:name="com.yourPackageName.YourFragmentClass"
android:id="@+id/themap"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Upvotes: 2