小编Sha*_*aun的帖子

如何修复"Support-v13:19.1.0取决于库,但不是库本身"?

自从从0.6.2升级以来,我刚刚在Android Studio 0.8.1中推出了一个项目.

引发的错误是"错误:模块版本com.android.support:support-v13:19.1.0依赖于库,但不是库本身".

有谁知道为什么会这样?我已经安装了一些新的API20用于Android L,但是这个项目的buildTools仍然设置为19.1.0.

这是我的build.gradle的依赖项部分:

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.android.support:appcompat-v7:19.1.+'
   compile 'com.android.support:support-v13:19.1.+'
   compile 'com.jakewharton:butterknife:5.1.0'
   compile 'de.greenrobot:eventbus:2.2.1'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.mcxiaoke.viewpagerindicator:library:2.4.1'
   compile 'uk.co.chrisjenx:calligraphy:0.7.+'
   compile 'com.crashlytics.android:crashlytics:1.+'
   compile 'com.google.android.gms:play-services:4.4.+'
}
Run Code Online (Sandbox Code Playgroud)

SDK/Buildtools设置如下:

compileSdkVersion 19
buildToolsVersion "19.1.0"
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这个或指向我修复?我很难过.

android gradle android-support-library android-gradle-plugin

15
推荐指数
1
解决办法
4368
查看次数

如何使用Retrofit和OKHttp在下次请求时使缓存路由无效/强制更新?

我正在使用OKHttp客户端的Retrofit来缓存来自JSON API的响应.

这很好用.

但是,如果我在设备上执行导致数据在服务器上更新的操作,我需要一种方法来"使某个特定路由无效",以确保下次请求此数据时,它将从服务器再次而不是现在过时的缓存版本.

目前,我通过在请求的Cache-Control标头中显式调用带有"no-cache"标志的新路由来解决这个问题,但是这迫使我在需要之前下载新数据,如果需要,可能会多次下载采取多个操作,只是为了使缓存保持最新.

有没有办法在我的改造/ OKhttp客户端中标记路由/方法,因为缓存已过期,需要在下次请求时通过网络进行强制更新?

android caching retrofit okhttp

9
推荐指数
3
解决办法
3882
查看次数

将两个NumberPicker视图与onValueChanged链接会导致不可预测的崩溃

我创建了一个包含两个NumberPicker视图的对话框.第一个包含组列表,第二个包含所选组中的项目:

Group         Group Items
  1            2: Group 2 Item 2
 [2]          [3: Group 2 Item 3]
  3            4: Group 2 Item 4
Run Code Online (Sandbox Code Playgroud)

我正在第一个NumberPicker中插入setOnValueChangedListener来填充第二个NumberPicker.

  mNumberPickerGroup.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker numberPicker, int from, int to) {
            int size = mData.getItemsForGroup(to).size();
            String[] strings = mData.getItemTitlesForGroup(to);

            mNumberPickerItems.setMinValue(1);
            mNumberPickerItems.setValue(1);

            mNumberPickerItems.setMaxValue(size);
            mNumberPickerItems.setDisplayedValues(strings);

        }
    });
Run Code Online (Sandbox Code Playgroud)

这基本上有效 - 直到在某些情况下,在设置setDisplayedValues字符串时,更改组几次可能会导致NumberPicker类崩溃.

这个错误是项目的numberpicker中的数组索引超出范围异常,是我传入的字符串数组的一行.我在上面的更新代码中设置了一个断点,并验证了String数组始终是数字选择器上最小值和最大值之间设置的项目数量的正确大小,所以这让我很难过.

  java.lang.ArrayIndexOutOfBoundsException: length=22; index=22
        at android.widget.NumberPicker.ensureCachedScrollSelectorValue(NumberPicker.java:1768)
        at android.widget.NumberPicker.initializeSelectorWheelIndices(NumberPicker.java:1583)
        at android.widget.NumberPicker.setMaxValue(NumberPicker.java:1390)
        at uk.co.my.app.fragments.GroupMarkUptoDialog.updateItemPicker(MarkUptoDialog.java:99)
Run Code Online (Sandbox Code Playgroud)

我即将开始阅读NumberPicker中发生的事情,以确定我是否使用它错了,但任何建议都会受到欢迎."ensureCachedScrollSelectorValue"让我觉得我需要在用新数据更新之前以某种方式重置numberpicker,但我不确定.

谁能看到我在这里做错了什么?

我意识到NumberPicker并不是一个真正的字符串选择器,所以如果有人对如何实现这种UI有更好的建议,我会全力以赴.否则,我正在试图实施某种去抖动的路线,在群组选择器上的所有活动完成后更新项目选择器.

android

7
推荐指数
1
解决办法
1427
查看次数

Android Studio 0.8 Beta屏幕捕获/视频捕获已损坏

我昨晚将Android Studio从0.6.2升级到了0.8 beta,没有任何问题.

不幸的是,我只是试图从Glass获取视频捕获(我一直在以这种方式发送定期进度更新)以发现它不再起作用.按下记录会跳过实际录制过程并直接跳到保存对话框,保存没有内容的视频文件.

屏幕捕获按钮显示错误:

Unexpected error while obtaining screenshot: java.lang.IllegalStateException: @NotNull method com/android/tools/idea/ddms/screenshot/DeviceArtDescriptor.getArtDescriptor must not return null
Run Code Online (Sandbox Code Playgroud)

可能导致此问题或如何解决问题的任何想法?

android adb android-studio

7
推荐指数
1
解决办法
3547
查看次数