小编Tud*_*uca的帖子

找不到与给定名称匹配的资源:attr'android:keyboardNavigationCluster'.更新到支持库26.0.0时

我在更新到最新的支持库版本26.0.0时遇到此问题(https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0):

错误:(18,21)找不到与给定名称匹配的资源:attr'android:keyboardNavigationCluster'.

/.../app/build/intermediates/res/merged/beta/debug/values-v26/values-v26.xml
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:Execution failed for task ':app:processBetaDebugResources'.
Run Code Online (Sandbox Code Playgroud)

com.android.ide.common.process.ProcessException:无法执行aapt

该文件来自支持库:

<style name="Base.V26.Widget.AppCompat.Toolbar" parent="Base.V7.Widget.AppCompat.Toolbar">
    <item name="android:touchscreenBlocksFocus">true</item>
    <item name="android:keyboardNavigationCluster">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我们使用以下版本:

ext.COMPILE_SDK_VERSION = 26
ext.BUILD_TOOLS_VERSION = "26.0.1"

ext.MIN_SDK_VERSION = 17
ext.TARGET_SDK_VERSION = …
Run Code Online (Sandbox Code Playgroud)

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

213
推荐指数
10
解决办法
14万
查看次数

Android N Java 8功能(Jack编译器)和Kotlin互操作

更新3. KOTLIN 现在正在为ANDROID开发提供正式支持.通过GOOGLE.YAAAAAAAAS!

更新2:从长远来看,看起来JetBrains真的致力于支持Kotlin for Android.我是一个快乐的kotlin用户:).

更新:来自JetBrains的Hadi Hariri 提到他们将发布有关此主题的一些信息.一旦他们这样做,我会更新这篇文章.


===下一个被弃用的东西===

谷歌刚刚发布了即将推出的Android N的预览版,其中包含一些有趣的功能,最值得注意的是部分Java 8语言支持.这是可能的,因为Google正在开发新的Jack工具链.

使用javackotlinc的当前工具链:
javac(.java- > .class) - > dx(.class- > .dex)
kotlinc(.kt- > .class) - > dx(.class- > .dex)

新杰克工具链:
杰克(.java- > .jack- > .dex)

我假设谷歌将推动杰克成为Android开发的默认工具链.更新:Jack现已弃用.亚斯. …

java android kotlin android-jack-and-jill

98
推荐指数
5
解决办法
8600
查看次数

通过Uri滑动加载本地图像.

我正在尝试使用Glide从本地存储加载图像但没有成功.

Glide.with(mContext)
    .load(pictureUri) // Uri of the picture
    .transform(new CircleTransform(..))
    .into(profileAvatar);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

java.lang.Exception: Failed to load model: '/storage/emulated/0/DCIM/Camera/IMG_20150831_180900.jpg'
at com.bumptech.glide.request.GenericRequest.onSizeReady(GenericRequest.java:441)
at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.getSize(ViewTarget.java:211)
at com.bumptech.glide.request.target.ViewTarget.getSize(ViewTarget.java:100)
at com.bumptech.glide.request.GenericRequest.begin(GenericRequest.java:272)
at com.bumptech.glide.manager.RequestTracker.resumeRequests(RequestTracker.java:83)
at com.bumptech.glide.RequestManager.resumeRequests(RequestManager.java:180)
at com.bumptech.glide.RequestManager.onStart(RequestManager.java:203)
at com.bumptech.glide.manager.ActivityFragmentLifecycle.onStart(ActivityFragmentLifecycle.java:50)
at com.bumptech.glide.manager.SupportRequestManagerFragment.onStart(SupportRequestManagerFragment.java:135)
at android.support.v4.app.Fragment.performStart(Fragment.java:1986)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1197)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1179)
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1996)
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:176)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:517)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activity.java:6006)
at android.app.Activity.performRestart(Activity.java:6063)
at android.app.Activity.performResume(Activity.java:6068)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)

android android-glide

27
推荐指数
5
解决办法
6万
查看次数

从Realm /从托管RealmObject转换RealmObject到非托管对象

我想RealmObject从它"分离"一个Realm,这意味着我希望能够RealmObject从一个方法返回一个并且能够在我closeRealm实例之后使用它.

像这样的东西:

public Person getPersonWithId(final Context context, final String personId){
    Realm realm = Realm.getInstance(context);
    Person person = realm.where.....;
    realm.close();
    return person;
}
Run Code Online (Sandbox Code Playgroud)

目前getPersonWithId(mContext, personId).getName()将按预期返回错误.

拥有一个托管对象也意味着该对象是不可变的(无法修改),因此任何更新对象的方法person.setName(String name)都会因为该对象是一个托管对象而失败.

我希望会有像这样的方法 Person person = person.detachFromRealm();

有谁知道这个问题的解决方案/解决方法?

android realm

13
推荐指数
1
解决办法
5123
查看次数

Realm,RxJava,asObservable()和doOnUnsubscribe()

在我的Android项目中,我使用realm作为我的数据存储引擎.我喜欢它!
我也使用RxJava,因为它使"线程化"变得如此简单,我真的很喜欢整个"反应性思维".我喜欢它!

我使用MVP模式+一些"清洁架构"的想法来构建我的应用程序.

Interactors是唯一知道的人Realm.我在Observable的帮助下公开数据,如下所示:

@Override
public Observable<City> getHomeTown() {
    final Realm realm = Realm.getDefaultInstance();
    return realm.where(City.class).equalTo("name", "Cluj-Napoca").findAllAsync().asObservable()
            .doOnUnsubscribe(new Action0() {
                @Override
                public void call() {
                    realm.close();
                }
            })
            .compose(new NullIfNoRealmObject<City>());
}
Run Code Online (Sandbox Code Playgroud)

问题是我doOnUnsubscribe的副作用被调用之前Realm可以做它的事情,处理暴露的observable:

Caused by: java.lang.IllegalStateException: This Realm instance has already been closed, making it unusable.
at io.realm.BaseRealm.checkIfValid(BaseRealm.java:344)
at io.realm.RealmResults.removeChangeListener(RealmResults.java:818)
at io.realm.rx.RealmObservableFactory$3$2.call(RealmObservableFactory.java:137)
at rx.subscriptions.BooleanSubscription.unsubscribe(BooleanSubscription.java:71)
at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:124)
at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:113)
at rx.Subscriber.unsubscribe(Subscriber.java:98)
at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:124)
at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:113)
at rx.Subscriber.unsubscribe(Subscriber.java:98)
at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:150)
at …
Run Code Online (Sandbox Code Playgroud)

mvp android realm rx-java

13
推荐指数
1
解决办法
3260
查看次数

RETROFIT POST Realm对象

我有以下RETROFIT API:

@POST("/payments")    
Observable<Response> saveCreditCard(@Body CreditCard creditCard)
Run Code Online (Sandbox Code Playgroud)

CreditCard是一个RealmObject.

当我尝试使用我的API方法时:

CreditCard card = realm.createObject(CreditCard.class);
card.setWhateverField(...);
...
mApi.saveCreditCard(card)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(...);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

> retrofit.RetrofitError: com.fasterxml.jackson.databind.JsonMappingException: Realm access from incorrect thread. Realm objects can only be accessed on the thread they where created.
System.err? at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:400)
System.err? at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
System.err? at retrofit.RestAdapter$RestHandler$1.invoke(RestAdapter.java:265)
System.err? at retrofit.RxSupport$2.run(RxSupport.java:55)
System.err? at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
System.err? at java.util.concurrent.FutureTask.run(FutureTask.java:237)
System.err? at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
System.err? at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
System.err? at retrofit.Platform$Android$2$1.run(Platform.java:142)
System.err? at java.lang.Thread.run(Thread.java:818)
System.err? Caused by: java.lang.AssertionError: com.fasterxml.jackson.databind.JsonMappingException: Realm access …
Run Code Online (Sandbox Code Playgroud)

android realm retrofit

12
推荐指数
1
解决办法
1806
查看次数

Instabug for Android构建警告

我们有一个包含4个模块的gradle项目:1个库模块和3个Android应用程序.要构建我们的应用程序,我们使用circleCI.我们还根据指南禁用了circleCI构建的预定义.

在我将Instabug添加到我们的一个项目之前,一切都很棒.从那以后,我们一直在达到circleCI 4GB的限制.最重要的是,将Instabug作为依赖项的项目将启动preDexgradle任务,无论如何.要开始新的构建,我们使用以下命令:./gradlew assembleDebug -PpreDexEnable=false.

使用Instabug的项目在构建期间会收到一些警告,如下所示:

忽略没有关联的EnclosingMethod属性的匿名内部类(com.instabug.library.b)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何"-target"类型选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.

我假设由于为"Instabug项目"启动的preDex任务,我们达到了4 GB的限制.

有没有人知道发生了什么?

编辑:gradle文件

root build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'de.hannesstruss:godot:0.2'
        classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

apply plugin: 'de.hannesstruss.godot'
apply plugin: 'com.github.ben-manes.versions'
apply …
Run Code Online (Sandbox Code Playgroud)

android circleci instabug

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

大型和xlarge设备的布局相同

我的应用程序有一个智能手机布局和一个平板电脑布局

我想为两者largexlarge设备使用相同的布局.

我想支持使用API​​ 10及更高版本的设备,因此使用sw<N>dp是不可能的.

如果不在两个文件夹中放置相同的xml文件,我该怎么做呢.我不想让代码重复.这违反任何体面的编程原则.:)

android android-layout

6
推荐指数
1
解决办法
1229
查看次数

Android检查跨对象是否相等

如何检查两个Spanned对象是否相等(它们具有相同的内容和跨度)?我宁愿不执行该equals(Spanned span)方法。:)

android spanned spannable

6
推荐指数
1
解决办法
522
查看次数

RxJava替代map()运算符来保存发出的项目

我使用Retrofit与REST API交互,RxJava操作我收到的数据.

在下面的代码片段中,我进行了API调用,并使用map运算符保存我收到的数据,然后继续对流进行其他操作.

retrofitApi.registerDevice(mDevice)
           .map(new Func1<Device, Device>() {
               @Override
               public Device call(Device device) {
                  // The only purpose of the map() operator 
                  // is to save the received device.
                  magicBox.saveDeviceId(device.getId());
                  return device;
               }
           })
           .otherOperations()...
Run Code Online (Sandbox Code Playgroud)

我的问题是:这个工作有更好的操作员吗?我觉得我误用了map操作员.

android rx-java retrofit

5
推荐指数
1
解决办法
462
查看次数

通过集合中提供的 ID 查询领域中的对象

我有一个List<String> ids,我想要所有FooRealmObject具有 ID 字段的 s 包含在ids列表中。

我可以通过 ID 迭代ids列表和查询对象,但我希望有一个单行代码,例如:

realm.where(Foo.class).in("id", ids).findAll();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

android realm

4
推荐指数
1
解决办法
5224
查看次数