小编Nsn*_*nik的帖子

使用room persistent library更新参数

如何使用房间库更新整行,@ Update使用@Entity注释对象并通过引用主键更新它但是如何通过某些其他参数更新,其中某些值与某行中的单元格中的值匹配.

//Simple update
@Update
int updateObject(ObjectEntity... objectEntities);

//Custom Update
@Query(UPDATE TABLENAME ????)
int updateObject(ObjetEntity objectEntity,String field);
Run Code Online (Sandbox Code Playgroud)

我应该通过什么代替???? 这样新的objectEntity将被字段值匹配的旧object替换.

android android-sqlite android-room

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

输出:错误:找不到资源样式/ TextAppearance.Compat.Notification.Info(又名package_name:style/TextAppearance.Compat.Notification.Info)

切换到Android Studio 3.2 canary后,我收到以下构建错误.

我看过这个帖子,那个人有类似的问题,但没有提到他们的解决方案.

我想尝试新的材料组件和喷气背包,所以有可能我不需要换回.

com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
Output:  error: resource style/TextAppearance.Compat.Notification.Info (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Info) not found.
error: resource style/TextAppearance.Compat.Notification.Info (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Info) not found.
error: resource style/TextAppearance.Compat.Notification.Info (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Info) not found.
error: resource style/TextAppearance.Compat.Notification (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification) not found.
error: resource style/TextAppearance.Compat.Notification (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification) not found.
error: resource style/TextAppearance.Compat.Notification (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification) not found.
error: resource style/TextAppearance.Compat.Notification.Time (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Time) not found.
error: resource style/TextAppearance.Compat.Notification.Time (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Time) not found.
error: resource style/TextAppearance.Compat.Notification.Time (aka com.nsnik.nrs.kotlintest.debug:style/TextAppearance.Compat.Notification.Time) not found.
error: resource …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-notifications android-resources android-styles

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

切换到3.0 canary 5后,Gradle同步失败

切换到Android Studio 3.0金丝雀5后,我无法建立我的gradle经过一些搜索我发现错误是由于过时的Guava库引起的,但我没有在我的项目中使用Guava.

Project Gradle

buildscript {
ext.kotlin_version = '1.1.3'
repositories {
    jcenter()
    maven { url 'https://maven.fabric.io/public' }
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
    classpath 'com.google.gms:google-services:3.1.0'
    classpath 'io.fabric.tools:gradle:1.22.2'
    classpath 'com.google.firebase:firebase-plugins:1.1.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
    maven { url 'https://maven.google.com' }
    maven { url 'https://maven.fabric.io/public' }
    mavenCentral()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

App Gradle …

android gradle android-gradle-plugin canary-deployment

8
推荐指数
1
解决办法
1746
查看次数

底片的浓缩咖啡测试

我正在为底部工作表创建一个浓缩咖啡测试,其中工作表有 5 个线性排列的文本视图,第一个文本视图可见,单击第一个文本视图将展开整个底部工作表,显示所有项目,然后需要单击第三个项目要通过的测试。

问题是浓缩咖啡在展开后不会单击底部工作表的文本视图,直到我将Thread.sleep(1000).

我什至尝试过 IdlingResource,一旦在第一个项目上注册了点击,我就把它设置为 false,在 bottomSheetBehaviour 上调用 onStateChanged 之后,我再次将它设置为 true,但仍然没有帮助。

这不起作用:

onView(withId(R.id.toolsItem1)).perform(click());
onView(withId(R.id.toolsItem3)).check(matches(isDisplayed()));
onView(withId(R.id.toolsItem3)).perform(click());
Run Code Online (Sandbox Code Playgroud)

这确实:

onView(withId(R.id.toolsItem1)).perform(click());
Thread.sleep(1000);
onView(withId(R.id.toolsItem3)).check(matches(isDisplayed()));
onView(withId(R.id.toolsItem3)).perform(click());
Run Code Online (Sandbox Code Playgroud)

android android-testing android-espresso bottom-sheet

8
推荐指数
1
解决办法
2993
查看次数

使用observable时的实时数据异常

当试图从ViewModel返回的片段中观察实时数据时,我得到了以下异常,在此之前我在这篇文章中详细阐述了错误,交换 android.arch.lifecycle:common-java8:1.0.0-beta2android.arch.lifecycle:compiler:1.0.0-beta2解决该问题,但现在我得到了以下异常

你可以在这里找到整个代码

E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1                                                                                  
Process: com.nrs.nsnik.architecturecomponents, PID: 4114                                                                                    
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/core/executor/AppToolkitTaskExecutor;                                                                                        
at android.arch.persistence.room.InvalidationTracker.addObserver(InvalidationTracker.java:241)                                                                                           
at android.arch.persistence.room.InvalidationTracker.addWeakObserver(InvalidationTracker.java:257)                                                                                        
at com.nrs.nsnik.architecturecomponents.data.NoteDao_Impl$4.compute(NoteDao_Impl.java:146)                                                                                        
at com.nrs.nsnik.architecturecomponents.data.NoteDao_Impl$4.compute(NoteDao_Impl.java:134)                                                                                        
at android.arch.lifecycle.ComputableLiveData$2.run(ComputableLiveData.java:87)                                                                                        
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)                                                                                        
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)                                                                                        
at java.lang.Thread.run(Thread.java:761)                                                                                     
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.core.executor.AppToolkitTaskExecutor" on path: DexPathList[[zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/base.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.nrs.nsnik.architecturecomponents-1/split_lib_slice_7_apk.apk", zip file …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-livedata android-architecture-components

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

在不同大小的列表上进行DiffUtil回调

我正在使用自定义实现DiffUtil回调比较两个列表以查找它们之间的差异,但是这两个列表具有不同的大小,并且当我在比较的'areItemsTheSame'和'areContentsTheSame'元素的两个列表中记录要比较的元素时,受包含最少元素的列表大小的限制,因此在我的适配器中调用“ dispatchUpdatesTo”时,将添加新项,但其内容与旧列表中的最后一项相同

这些方法的实现:

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
    return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition));
}

@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
    return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition));
}
Run Code Online (Sandbox Code Playgroud)

例如:

(旧)列表A =“ A”,“ B”,“ C”,“ D”,“ E”,“ F”,“ G”,“ I”

(新)列表B =“ A”,“ B”,“ C”,“ D”,“ E”,“ F”,“ G”,“ I”,“ K”

在登录时,我发现“ areItemsTheSame”和“ areContentsTheSame”仅将元素最多与“ I”进行比较,因此对于所有调用均返回true,并且在为适配器调用dispatchUpdatesTo之后,将新项添加到列表中,但它是“ I”而不是“ k”

所以我得到的是列表A =“ A”,“ B”,“ C”,“ D”,“ E”,“ F”,“ G”,“ I”,“ I”

android arraylist android-recyclerview

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

即使在添加到 gradle 之后也无法解析参考

我正在解决对这三个类的引用:

  • 木材

  • 泄漏金丝雀

  • 查找导航控制器

我在我的 gradle 中为这些添加了依赖项,我在其他项目中也有这些依赖项,但我在这里遇到了问题。

我试图:

  • 清理、重建、依赖构建、构建必要
  • 删除了 .gradle、.idea、build、app/build 文件夹并重建应用程序,但问题仍然存在
  • 我也试过 invalidate-cache 并重新启动它也没有帮助

摇篮文件:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.oss.licenses.plugin'
apply plugin: 'androidx.navigation.safeargs'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 28
buildToolsVersion '28.0.0 rc2'
defaultConfig {
    applicationId "com.nrs.sid.creditcardsecurity"
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
        }
    }
}
sourceSets {
    androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}
buildTypes { …
Run Code Online (Sandbox Code Playgroud)

android android-navigation android-gradle-plugin leakcanary timber-android

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

Android Live数据观察者异常

我正在尝试实现新的android体系结构组件并在片段和视图模型中使用实时数据,但是当我向实时数据添加观察者时,应用程序崩溃抛出此异常.

Process: com.nrs.nsnik.architecturecomponents, PID: 3071

java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.nrs.nsnik.architecturecomponents/com.nrs.nsnik.architecturec
omponents.view.MainActivity}: java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapter
.
.
.
.
 Caused by: java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapter
Run Code Online (Sandbox Code Playgroud)

列表片段:

public class ListFragment extends Fragment {

    @BindView(R.id.listFragmentRecyclerView)
    RecyclerView mRecyclerView;
    @BindView(R.id.listFragmentAddItem)
    FloatingActionButton mFloatingActionButton;
    private Unbinder mUnbinder;
    private CompositeDisposable mCompositeDisposable;
    private ListViewModel mListViewModel;
    private List<NoteEntity> mNoteEntityList;
    private ListAdapter mListAdapter;
    private NoteDatabase mNoteDatabase;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_list, container, false);
        mUnbinder …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite android-livedata android-viewmodel android-architecture-components

3
推荐指数
1
解决办法
972
查看次数