7

I keep getting this error and it's causing my app to crash. Trying to implement the new v4 swipe refresh layout. I have updated the support library + sdk. What is the issue?

Could not find class 'android.support.v4.widget.SwipeRefreshLayout', referenced from method ......onCreate

import android.support.v4.widget.SwipeRefreshLayout;
...
private SwipeRefreshLayout swipeLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.home_page_list);
swipeLayout = (SwipeRefreshLayout) findViewById(R.id.container);
    swipeLayout.setColorScheme(android.R.color.holo_blue_bright, 
            android.R.color.holo_green_light, 
            android.R.color.holo_orange_light, 
            android.R.color.holo_red_light);
    swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            swipeLayout.setRefreshing(false);
        }
    });

XML

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.devrim.ythaber.HomeActivity"
tools:ignore="MergeRootFrame" >

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/thumb"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:contentDescription="@string/app_name" />

        <RelativeLayout
            android:id="@+id/relativeLayout1"
            android:layout_width="wrap_content"
            android:layout_height="290dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:orientation="vertical" >

            <!-- android:layout_toRightOf="@+id/thumb" -->

        </RelativeLayout>

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:ellipsize="end"
            android:fontFamily="sans-serif-light"
            android:maxLines="2"
            android:shadowColor="@color/dropshadow"
            android:shadowDx="2"
            android:shadowDy="2"
            android:shadowRadius="2"
            android:text="@string/title"
            android:textAllCaps="false"
            android:textAppearance="?android:attr/textAppearanceSmallPopupMenu"
            android:textColor="@color/titlecolour"
            android:textSize="35sp"
            android:textStyle="italic"
            android:typeface="sans" >
        </TextView>

        <TextView
            android:id="@+id/category"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/title"
            android:ellipsize="end"
            android:fontFamily="sans-serif-light"
            android:gravity="right"
            android:maxLines="1"
            android:paddingRight="5dp"
            android:paddingTop="10dp"
            android:textAppearance="?android:attr/textAppearanceSmallPopupMenu"
            android:textColor="@color/catcolour"
            android:textSize="17sp"
            android:textStyle="italic"
            android:typeface="sans" >
        </TextView>
    </LinearLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>

Complete logcat:

05-01 21:31:27.390: W/dalvikvm(11452): VFY: unable to find class referenced in signature (Landroid/support/v4/widget/SwipeRefreshLayout;)
05-01 21:31:27.390: E/dalvikvm(11452): Could not find class 'android.support.v4.widget.SwipeRefreshLayout', referenced from method com.devrim.ythaber.HomeActivity.onCreate
05-01 21:31:27.390: W/dalvikvm(11452): VFY: unable to resolve check-cast 619 (Landroid/support/v4/widget/SwipeRefreshLayout;) in Lcom/devrim/ythaber/HomeActivity;
05-01 21:31:27.390: W/dalvikvm(11452): Link of class 'Lcom/devrim/ythaber/HomeActivity$1;' failed
05-01 21:31:27.440: W/dalvikvm(11452): threadid=1: thread exiting with uncaught exception (group=0x4166ee18)
05-01 21:31:27.440: E/AndroidRuntime(11452): FATAL EXCEPTION: main
05-01 21:31:27.440: E/AndroidRuntime(11452): Process: com.devrim.ythaber, PID: 11452
05-01 21:31:27.440: E/AndroidRuntime(11452): java.lang.NoClassDefFoundError: android.support.v4.widget.SwipeRefreshLayout
05-01 21:31:27.440: E/AndroidRuntime(11452):    at com.devrim.ythaber.HomeActivity.onCreate(HomeActivity.java:56)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.Activity.performCreate(Activity.java:5312)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2552)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.ActivityThread.access$800(ActivityThread.java:156)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.os.Handler.dispatchMessage(Handler.java:102)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.os.Looper.loop(Looper.java:157)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at android.app.ActivityThread.main(ActivityThread.java:5872)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at java.lang.reflect.Method.invokeNative(Native Method)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at java.lang.reflect.Method.invoke(Method.java:515)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069)
05-01 21:31:27.440: E/AndroidRuntime(11452):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
Abdul Sadik Yalcin
  • 1,744
  • 2
  • 19
  • 50

3 Answers3

5

If you are using graddle, you may want to check that you updated your configuration to use the 19.1 version of the android support library. See following line:

dependencies {
    compile 'com.android.support:support-v4:19.1.+'
}
Distwo
  • 11,569
  • 8
  • 42
  • 65
3

For me, the problem was that one of my library projects was using v13 of the support library: android-support-v13.jar.

So look out for a message like this in your logs:

Found both android-support-v4 and android-support-v13 in the dependency list.
Because v13 includes v4, using only v13.

If you see that warning, make sure your library project also includes the latest support library, otherwise your v4 library might get superseded by an old v13 library (which obviously does not include the new SwipeRefreshLayout).

jenzz
  • 7,239
  • 6
  • 49
  • 69
0

Verify that you're android support library that is installed in your SDK manager is 19.1 and not just 19.

If it is and you've tried updating your project to the new library, I've found that, that doesn't work properly. Create a blank new android application project and copy the support library from /libs/ over to your existing project and try it again.

rwarner
  • 577
  • 2
  • 4
  • 14