找不到类'android.support.v4.widget.SwipeRefreshLayout'

时间:2014-05-01 20:30:03

标签: java android

我一直收到此错误,导致我的应用崩溃。尝试实现新的v4滑动刷新布局。我更新了支持库+ sdk。有什么问题?

无法找到类'android.support.v4.widget.SwipeRefreshLayout',引自方法...... 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>

完成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)

3 个答案:

答案 0 :(得分:4)

如果您使用的是gradle,则可能需要检查是否已更新配置以使用19.1版本的android支持库。见以下一行:

dependencies {
    compile 'com.android.support:support-v4:19.1.+'
}

答案 1 :(得分:3)

对我来说,问题是我的某个图书馆项目正在使用支持库的 v13 android-support-v13.jar

请在日志中注意这样的消息:

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

如果您看到该警告,请确保您的库项目还包含最新的支持库,否则您的 v4 库可能会被旧的 v13 库取代(显然不包括新的SwipeRefreshLayout)。

答案 2 :(得分:0)

确认您的SDK管理器中安装的Android支持库是19.1而不仅仅是19。

如果是,并且您已尝试将项目更新到新库,我发现,这不能正常工作。创建一个空白的新Android应用程序项目,并将支持库从/ libs /复制到现有项目并再次尝试。