如何使用房间库更新整行,@ 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 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
切换到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 …
我正在为底部工作表创建一个浓缩咖啡测试,其中工作表有 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) 当试图从ViewModel返回的片段中观察实时数据时,我得到了以下异常,在此之前我在这篇文章中详细阐述了错误,交换
android.arch.lifecycle:common-java8:1.0.0-beta2了android.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
我正在使用自定义实现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”
我正在解决对这三个类的引用:
木材
泄漏金丝雀
我在我的 gradle 中为这些添加了依赖项,我在其他项目中也有这些依赖项,但我在这里遇到了问题。
我试图:
摇篮文件:
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
我正在尝试实现新的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
android ×8
android-architecture-components ×2
android-room ×1
arraylist ×1
bottom-sheet ×1
gradle ×1
leakcanary ×1