Error Inflating Class Fragment (related to ShinobiCharts)

480 Views Asked by At

I am getting an "Error inflating class fragment". Is it due to an error in my xml file? I have a feeling it may have something to do with the namespaces I'm using, but I'm not sure...

Here's the logcat:

12-30 11:02:41.525: I/dalvikvm(8714): Could not find method 

com.example.gameexpensetracker.Chart_screen_activity.getFragmentManager, referenced from method com.example.gameexpensetracker.Chart_screen_activity.pieGraphData
12-30 11:02:41.525: W/dalvikvm(8714): VFY: unable to resolve virtual method 5181: Lcom/example/gameexpensetracker/Chart_screen_activity;.getFragmentManager ()Landroid/app/FragmentManager;
12-30 11:02:41.535: D/dalvikvm(8714): VFY: replacing opcode 0x6e at 0x0204
12-30 11:02:41.535: D/dalvikvm(8714): VFY: dead code 0x0207-02c9 in Lcom/example/gameexpensetracker/Chart_screen_activity;.pieGraphData ()V
12-30 11:02:41.555: D/AndroidRuntime(8714): Shutting down VM
12-30 11:02:41.555: W/dalvikvm(8714): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-30 11:02:41.565: E/AndroidRuntime(8714): FATAL EXCEPTION: main
12-30 11:02:41.565: E/AndroidRuntime(8714): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gameexpensetracker/com.example.gameexpensetracker.Chart_screen_activity}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.os.Looper.loop(Looper.java:123)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread.main(ActivityThread.java:3683)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at java.lang.reflect.Method.invokeNative(Native Method)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at java.lang.reflect.Method.invoke(Method.java:507)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at dalvik.system.NativeStart.main(Native Method)
12-30 11:02:41.565: E/AndroidRuntime(8714): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.Activity.setContentView(Activity.java:1657)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at com.example.gameexpensetracker.Chart_screen_activity.onCreate(Chart_screen_activity.java:27)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
12-30 11:02:41.565: E/AndroidRuntime(8714):     ... 11 more
12-30 11:02:41.565: E/AndroidRuntime(8714): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.gameexpensetracker-2.apk]
12-30 11:02:41.565: E/AndroidRuntime(8714):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.createView(LayoutInflater.java:471)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
12-30 11:02:41.565: E/AndroidRuntime(8714):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
12-30 11:02:41.565: E/AndroidRuntime(8714):     ... 20 more

And here's the XML file:

<LinearLayout 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"
tools:context=".Chartscreenactivity" >

<fragment
    class="com.shinobicontrols.charts.ChartFragment"
    android:id="@+id/chart"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

Here's the relevant code from the activity:

ChartFragment chartFragment =
                                    (ChartFragment) getFragmentManager().findFragmentById(R.id.chart);

                            // Get the a reference to the ShinobiChart from the ChartFragment
                            ShinobiChart shinobiChart = chartFragment.getShinobiChart();


                            shinobiChart.setLicenseKey("UXbN8mQk0U/byjLMjAxNDAxMjJpbmZvQHNoaW5vYmljb250cm9scy5jb20=1rmCjO7D5wQQxbCcpm28bXkLR" +
                                    "/7MtHh+IrFH93SspNfyW8J5Kf6xZfQ7dUJGFNDwdYkZGUaabHs3vezwOc9t+eJjMmVLkhRkVnnN47JIl3ir/cDGz36Ru2bC7SexLSZhkj0" +
                                    "bXL69ISkSVMvyJZsbGm7gpby0=BQxSUisl3BaWf/7myRmmlIjRnMU2cA7q+/03ZX9wdj30RzapYANf51ee3Pi8m2rVW6aD7t6Hi4Qy5vv9xpa" +
                                    "QYXF5T7XzsafhzS3hbBokp36BoJZg8IrceBj742nQajYyV7trx5GIw9jy/V6r0bvctKYwTim7Kzq+YPWGMtqtQoU=PFJTQUtleVZhbHVlPjxNb" +
                                    "2R1bHVzPnh6YlRrc2dYWWJvQUh5VGR6dkNzQXUrUVAxQnM5b2VrZUxxZVdacnRFbUx3OHZlWStBK3pteXg4NGpJbFkzT2hGdlNYbHZDSjlKVGZQ" +
                                    "TTF4S2ZweWZBVXBGeXgxRnVBMThOcDNETUxXR1JJbTJ6WXA3a1YyMEdYZGU3RnJyTHZjdGhIbW1BZ21PTTdwMFBsNWlSKzNVMDg5M1N4b2hCZlJ5RHd" +
                                    "EeE9vdDNlMD08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+");

                            SimpleDataAdapter<String, Double> dataAdapter = new SimpleDataAdapter<String, Double>();
                            dataAdapter.add(new DataPoint<String, Double>("Action", actionTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Adventure", adventureTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("MMO", MMOTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Puzzle", puzzleTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Racing", racingTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("RPG", rpgTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Sim", simulationTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Sports",sportsTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Strategy", strategyTotalDB));
                            dataAdapter.add(new DataPoint<String, Double>("Other", otherTotalDB));


                            PieSeries series = new PieSeries();
                            series.setDataAdapter(dataAdapter);
                            shinobiChart.addSeries(series);
1

There are 1 best solutions below

0
On

Although ShinobiCharts supports down to API Level 9 (Gingerbread), Fragments were only introduced in API Level 11. Therefore you need to use the support library.

From the getting started guide:

Tip: To support devices down to API 9: Android 2.3 (Gingerbread) you will need to use SupportChartFragment instead of ChartFragment (in both the XML and the Java source). Additionally, you will need to change the ShinobiQuickStartActivity to extend FragmentActivity instead of Activity and use the getSupportFragmentManager() method instead of getFragmentManager(). Your project will need to reference the Android Support Library to do this.

(via: http://www.shinobicontrols.com/android/shinobicharts/quickstartguide/draw-a-simple-chart/)