我正在尝试执行Firebase事务,以便更改我的Firebase数据库中两个位置的值,但交易处理的MutableData为空。 是否禁止在数据库根上运行事务? 我是否必须运行多个链接的交易才能完成此操作? val ref = FirebaseDatabase .getInstance() .getReference("/") ref.runTransaction(object : Transaction.Handler { override fun doTransaction(currentData: MutableData): Transaction.Result { println( currentData) // { key = <none>, value = null } if (currentData.value == null){ return Transaction.success(currentData) } currentData.child("users/{userID}/someVal/").setValue(X) currentData.child("items/{itemID}/someVal/").setValue(Y) return Transaction.success(currentData) } })
我的数据类看起来像这样 @Entity(tableName = "items") data class Item( @ColumnInfo(name = "name") var name: String = "", @ColumnInfo(name = "room") var room: String = "", @ColumnInfo(name = "quantity") var quantity: String = "", @ColumnInfo(name = "description") var description: String = "", @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") var id: Long = 0 ) 房间使用SQLite,而且SQLite在其数据库中支持NOT NULL列。 我尝试使用@NonNull注释列,但它没有效果。 有没有办法使房间数据库中的列不可空?
如何使用房间持久性库“ 创建触发器 ” CREATE TRIGGER IF NOT EXISTS delete_till_10 INSERT ON user WHEN (select count(*) from user)>9 BEGIN DELETE FROM user WHERE id IN (SELECT id FROM user ORDER BY id limit (select count(*) -9 from user)); END
您好我有Android Studio 3.0 Beta 7,我想更新到新版本的Android Studio 3.1金丝雀。 它显示了这个对话框。 下载按钮带我到这个页面https://developer.android.com/studio/preview/index.html?utm_source=android-studio并建议下载完整的IDE。 不应该下载更新的补丁? 或者这只对我而言
我发现了一个有趣的事情,但我做不到。 是否有任何方法使本地扩展方法在接收器的函数中可用。 val list = ArrayList<Any>(); fun <T> Array<T>.bind(context: MutableList<in T>, block: Array<T>.() -> Unit) { fun Array<T>.save() { context.addAll(this); } block(); } arrayOf(1, 2, 3).bind(list) { save(); //todo: how to bind extension in execution scope }; 我知道有一种替代方法,为接收器引入另一种类型,但我想避免它。 例如: interface Savable { fun save(); } fun <T> Array<T>.bind(context: MutableList<in T>, block: Savable.() -> Unit) { […]
下面这个稍微过时的教程 ,我卡住试图使用org.jetbrains.anko.design.floatingActionButton 。 错误是: 无法访问类“android.support.design.widget.FloatingActionButton”。 检查您的模块类路径是否存在缺失或冲突的依赖关系。 build.gradle(Project) buildscript { ext.kotlin_version = '1.1.50' ext.anko_version = '0.10.1' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta6' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } build.gradle(App) apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { […]
我正在创建一个Entity(Room Persistence lib)类的食物,在这里我想把foodId作为自动增量。 @Entity class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double) { @PrimaryKey var foodId: Int = 0 var calories: Double = 0.toDouble() } 我如何设置foodId自动增量字段?
我按照这里的指示来实现Googlemap for business(选项2:将SDK导入为库模块): https://developers.google.com/maps/premium/android-get-started当我尝试运行应用程序,它返回给我这个错误: * What went wrong: Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK protobuf.meta File1: /Users/name/.android/build-cache/f333e5a1ed5f958c1e7d100de7935a31efd81cd6/output/jars/classes.jar File2: /Users/name/Documents/name/project-name/googlemapssdkm4b_lib/build/intermediates/bundles/default/classes.jar 这是我的gradle文件: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: 'test-environment.gradle' apply plugin: 'io.fabric' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' repositories { maven { url 'https://maven.fabric.io/public' } maven { url […]
据我所知: PUT – 用其整个表示更新对象(替换) 修补程序 – 仅使用给定字段更新对象(更新) 我正在使用Spring来实现一个非常简单的HTTP服务器。 当用户想要更新他的数据时,他需要为某个端点(比如: api/user )创建一个HTTP PATCH 。 他的请求体通过@RequestBody映射到DTO,如下所示: class PatchUserRequest { @Email @Length(min = 5, max = 50) var email: String? = null @Length(max = 100) var name: String? = null … } 然后我使用这个类的一个对象来更新(修补)用户对象: fun patchWithRequest(userRequest: PatchUserRequest) { if (!userRequest.email.isNullOrEmpty()) { email = userRequest.email!! } if (!userRequest.name.isNullOrEmpty()) { name […]
嗨,我想测试一个Android主持人使用mockito,我有很多麻烦。 这是我想测试的代码: public class SignUpPresenter extends BasePresenter { private static final String TAG = SignUpPresenter.class.getSimpleName(); private final AuthRepository mAuthRepository; private final SignUpView mView; public SignUpPresenter(@NonNull SignUpView view, @NonNull AuthRepository authRepository) { this.mAuthRepository = authRepository; this.mView = view; } public void signUp(@NonNull String username, @NonNull String password, @NonNull String email) { mCompositeDisposable.add(mAuthRepository.signUp(username, password, email) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) […]