" ClassNotFoundException:android.support.v7.widget.GridLayout"即使它实际上是进口的

时间:2016-05-02 07:50:38

标签: android classnotfoundexception android-gridlayout

我有一个很奇怪的问题。我在Ubuntu 15.10上使用Android Studio 2.1。

我尝试从v7支持库实现GridLayout。我从SDK Manager安装了Android Support LibraryAndroid Support Repository,并将gridlayout添加到我的应用build.gradle依赖项中:

compile 'com.android.support:design:23.3.0'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:gridlayout-v7:23.3.0'

将其添加到我的布局XML文件时,它会正确地自动填充,就好像它应该像它应该导入一样。

<android.support.v7.widget.GridLayout xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:columnCount="4"
            app:rowCount="4"
            android:id="@+id/keypadButtons"
            app:alignmentMode="alignBounds">
...

但是当我去构建项目以查看它在设备上的样子时,它出于某种原因失败了。

当我想在Design视图中查看它时,我发现在事件日志中有一个解析错误,其中指出:

java.lang.RuntimeException: java.lang.ClassNotFoundException: android.support.v7.widget.GridLayout

修改 当在Design视图中查看GridLayout时,它甚至可以按原样呈现它(在我的例子中是4列和4行)。但是给出了找不到GridLayout类的解析错误,并且无法显示其他元素的Component Tree。

添加图书馆时我错过了一些步骤吗?我在Windows上使用了其他v4和v7支持库,没有任何问题。可能是Linux权限问题吗?

3 个答案:

答案 0 :(得分:0)

我已经尝试过您的代码并且工作正常。

在我的gradle文件中,我有:

android {
  compileSdkVersion 23
  buildToolsVersion "23.0.3"

...

defaultConfig {
     minSdkVersion 19
     targetSdkVersion 23
...


dependencies {
  compile fileTree(include: ['*.jar'], dir: 'libs')
  testCompile 'junit:junit:4.12'
  compile 'com.android.support:appcompat-v7:23.3.0'
  compile 'com.android.support:design:23.3.0'
  compile 'com.android.support:gridlayout-v7:23.3.0'

答案 1 :(得分:0)

构建问题的解决方案与在Build -> Clean Project下执行项目清理一样简单(并且有些尴尬)。这解决了我关于应用程序无法构建的问题。

现在我还遇到了在Design视图中找不到的GridLayout类。我找到的解决方案是使File -> Invalidate Caches / Restart下的缓存无效(注意:这将清除Android Studio中的本地历史记录)。重启后,找到了正确的GridLayout类。

答案 2 :(得分:0)

如果上述问题仍然存在,您可以将RecyclerViewGridLayoutManager一起使用。