0

I am not sure why I am getting this class cast exception. I am using support version ListFragment from a FragmentActivity.

Below is my Activity package com.thuptencho.transitbus.routes;

import java.util.List;

import android.content.AsyncQueryHandler;
import android.content.BroadcastReceiver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.content.LocalBroadcastManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.TextView;
public class RouteDetailFragmentActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor> {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        L.log();
        mContext = this;
        setContentView(R.layout.activity_route_detail);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        if (savedInstanceState != null) {
            this.mRouteId = savedInstanceState.getInt(C.IntentExtrasKeys.ROUTE_ID);
        }
        else {
            Intent i = getIntent();
            mRouteId = i.getIntExtra(C.IntentExtrasKeys.ROUTE_ID, C.DEFAULT_INVALID_ID);
        }

        String defaultAgency = PreferenceManager.getDefaultSharedPreferences(this).getString(C.Settings.DEFAULT_AGENCY,
                        "none");
        getActionBar().setTitle(defaultAgency.toUpperCase());

        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                        new IntentFilter(C.Broadcast.ROUTES_SINGLE_UPDATED_ACTION));
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                        new IntentFilter(C.Broadcast.DIRECTIONS_UPDATED_ACTION));
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                        new IntentFilter(C.Broadcast.D_STOPS_UPDATED_ACTION));
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                        new IntentFilter(C.Broadcast.R_STOPS_UPDATED_ACTION));

        setupView(); //...and so on

Below is my 'activity_route_detail.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="wrap_content"
    android:orientation="vertical"
    android:padding="5dp" >

    <TextView
        android:id="@+id/labelRoute"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/title_routes"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Spinner
        android:id="@+id/spinnerDirections"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/choose_direction" />

    <Spinner
        android:id="@+id/spinnerStops"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/choose_stop"
        android:spinnerMode="dialog" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="Upcoming rides"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ListView
        android:id="@+id/listViewPredictions"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <fragment
        android:id="@+id/upcomingRidesFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        class="com.thuptencho.transitbus.shared.UpcomingRidesFragment"
        android:tag="UpcomingRidesFragment" />

</LinearLayout>

Below is my ListFragment

package com.thuptencho.transitbus.shared;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ListView;

import com.thuptencho.transitbus.R;
import com.thuptencho.transitbus.routes.PredictionAdapter;
import com.thuptencho.transitbus.utilities.L;

public class UpcomingRidesFragment extends ListFragment {

    private PredictionAdapter adapter;


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        L.log();
        adapter = new PredictionAdapter(getActivity(), R.layout.prediction_listview_item, null);
        super.onActivityCreated(savedInstanceState);
    }
    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        L.log();
        super.onListItemClick(l, v, position, id);

    }

}

Below is the Logcat Error Messages

06-23 05:30:51.121: E/AndroidRuntime(30608): FATAL EXCEPTION: main
06-23 05:30:51.121: E/AndroidRuntime(30608): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thuptencho.transitbus/com.thuptencho.transitbus.routes.RouteDetailFragmentActivity}: android.view.InflateException: Binary XML file line #40: Error inflating class fragment
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.os.Looper.loop(Looper.java:137)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread.main(ActivityThread.java:5041)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at java.lang.reflect.Method.invokeNative(Native Method)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at java.lang.reflect.Method.invoke(Method.java:511)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at dalvik.system.NativeStart.main(Native Method)
06-23 05:30:51.121: E/AndroidRuntime(30608): Caused by: android.view.InflateException: Binary XML file line #40: Error inflating class fragment
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Activity.setContentView(Activity.java:1881)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at com.thuptencho.transitbus.routes.RouteDetailFragmentActivity.onCreate(RouteDetailFragmentActivity.java:48)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Activity.performCreate(Activity.java:5104)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
06-23 05:30:51.121: E/AndroidRuntime(30608):    ... 11 more
06-23 05:30:51.121: E/AndroidRuntime(30608): Caused by: java.lang.ClassCastException: com.thuptencho.transitbus.shared.UpcomingRidesFragment cannot be cast to android.app.Fragment
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Fragment.instantiate(Fragment.java:585)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Fragment.instantiate(Fragment.java:560)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.app.Activity.onCreateView(Activity.java:4709)
06-23 05:30:51.121: E/AndroidRuntime(30608):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
Thupten
  • 2,158
  • 1
  • 24
  • 31

2 Answers2

3

Does your RouteDetailFragmentActivity extend the android.support.v4.app.FragmentActivity ?

You have to be careful when using the support library. You have to remember to replace your usual Activity, Fragment, etc classes with the ones from the support library. You should read this page before continuing.

Plato
  • 2,338
  • 18
  • 21
0

com.thuptencho.transitbus.shared.UpcomingRidesFragment it's extending android.support.v4.app.ListFragment but some where you are trying cast it to android.app.Fragment..It should be android.support.v4.app.Frgament.

Ramesh Yankati
  • 1,197
  • 9
  • 13