Tag: 安卓

在OnLongPress Android中处理ACTION_UP

当用户将手指从屏幕上移开时,我需要做一些操作。 gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() { override fun onLongPress(e: MotionEvent) { if(e.getAction() == MotionEvent.ACTION_UP){ //This block is not handled } } }) 如何解决? 不要建议我使用onTouch

如何使用drawLine()绘制线条

我正在尝试使用drawLine()绘制一条线。 该行没有出现,有人可以调试此代码? fun LinePlacer(btn: Button?, call:Int,cPlayer:Int?){ var xStart=btn!!.getTop().toFloat() var yStart=btn!!.getLeft().toFloat() var xStop=xStart+100 var yStop=yStart+100 var paint=Paint() paint.setColor(Color.RED) Draw(xStart,yStart,yStop,xStop,paint) } fun Draw(xStart:Float,yStart:Float,yStop:Float,xStop:Float,paint: Paint){ var canvas=Canvas() paint.setColor(Color.RED) paint.setStrokeWidth(2f) canvas.drawLine(xStart,yStart,xStop,yStop,paint) } 编辑1:从主函数调用此函数。 我做了这个来测试画线是如何工作的。 那个btn是我按下的按钮。 我需要在那个按钮上划线。 也有一些变量现在不使用..但我需要他们以后… 编辑2:我一直在尝试,但我没有得到任何地方。 问题1:我需要添加一些东西在我的主XML文件来使用画布? 问题2:我重写了onDraw。 但是,当我需要时如何从主函数调用它? 问题3:我已经看到使用invalidate()绘制形状。 如何使用…

使用RxJava的Android室处理空的查询结果

尝试使用RxJava适配器测试新的Android Room Librarty。 我想处理结果,如果我的查询从DB返回0对象: 所以这里是DAO方法: @Query("SELECT * FROM auth_info") fun getAuthInfo(): Flowable<AuthResponse> 而我如何处理它: database.authDao().getAuthInfo() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .switchIfEmpty { Log.d(TAG, "IS EMPTY") } .firstOrError() .subscribe( { authResponse -> Log.d(TAG, authResponse.token) }, { error -> Log.d(TAG, error.message) }) 我的数据库是空的,所以我期望.switchIfEmty()工作,但没有任何处理方法正在发射。 .subscribe()和.switchIfEmpty()

将数据模型映射到域模型的简单方法

我正在遵循Clean Architecture模式,其中我们有3层( Presentation , Domain , Data )。 每个图层都应该有自己的模型,这些模型在使用mapper传递到另一个图层时应该被转换。 我想知道是否有一个简单的方法(一个库?)将data model映射到domain model而不创建mapper ,特别是如果我的data model有很多字段(如40-50)。 编辑 我已经试过ModelMapper和DozerMapper,但显然他们不能很好地在Android( ModelMapper问题和DozerMapper问题 )上工作。 提前致谢。

Android Keystore?.getKey在某些设备上返回null

我在我的应用程序中实施指纹认证。 我面临的问题是在某些设备上无法正常工作,而我的应用程序崩溃。 不过,它也适用于某些设备。 问题是在这一行 val key = keyStore?.getKey(Constants.FINGERPRINT_KEY_NAME, null) as SecretKey LogCat说: 11-02 14:27:42.825 E: FATAL EXCEPTION: main Process: kyivenergo.ua.kyivenegro, PID: 2298 java.lang.RuntimeException: Unable to start activity ComponentInfo{kyivenergo.ua.kyivenegro/ua.dtec.appOk.ui.screens.splash.SplashScreenActivity}: kotlin.TypeCastException: null cannot be cast to non-null type javax.crypto.SecretKey at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at […]

处理注释时发生了一些错误

当我添加代码int活动 @Inject lateinit var mCommonService:CommonService 错误来了 e:错误:无法访问Nullable e:找不到javax.annotation.Nullable e:有关详细信息,请参阅以下堆栈跟踪。 w:警告:这些选项不被任何注释处理器使用:'[kapt.kotlin.generated]' e:处理注释时发生了一些错误。 请看上面的错误信息。 这是我的模块build.gradle dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' compile 'com.squareup.okhttp3:okhttp:3.8.0' compile 'com.squareup.okhttp3:okhttp-urlconnection:3.8.0' compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.google.dagger:dagger:2.11' kapt 'com.google.dagger:dagger-compiler:2.11' compile 'com.readystatesoftware.systembartint:systembartint:1.0.3' compile […]

匕首2 – 在构造函数中注入默认值

我怎样才能注入这个构造函数: class SomeClass @Inject constructor( dep: Dependency, context: Context, private val otherClass: OtherClass = OtherClass() ) 我只提供依赖和Context …但它说它不能提供OtherClass 。 它应该需要这个类,因为它有一个默认值…我怎样才能做到这一点?

ClassCastException:android.inputmethodservice.KeyboardView无法转换为com.support.mukhtar.simplekeyboard.CustomKeyboardView android

我有SimpleIME.kt类为了实现简单的InputMethodEditor和做我的自定义键盘在android上: class SimpleIME : InputMethodService(), OnKeyboardActionListener { private var kv: CustomKeyboardView? = null private var keyboard: Keyboard? = null companion object{ const val TAG :String = "myLogs" } private var caps = false override fun onCreateInputView(): View? { kv = layoutInflater.inflate(R.layout.keyboard, null) as CustomKeyboardView keyboard = Keyboard(this, R.xml.qwerty) kv!!.keyboard = keyboard kv!!.setOnKeyboardActionListener(this) Log.d(TAG,"onCreateInputView") return kv […]

fromCallable中的RXjava2方法不尽人意

我是使用rxjava的新手,我试图在后台使用rxjava2运行一个函数,但是这个方法并没有被调用,我使用的代码在下面给出,让我知道它是否正确的方式在后台执行一个函数: Observable.fromCallable<OrderItem>(Callable { saveToDb(existingQty, newOty, product_id) }).doOnSubscribe { object : Observable<OrderItem>() { override fun subscribeActual(emitter: Observer<in OrderItem>?) { try { val orderItem = saveToDb(existingQty, newOty, product_id) emitter?.onNext(orderItem) emitter?.onComplete() } catch (e: Exception) { emitter?.onError(e) } } } } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()).doOnSubscribe { object : Observer<OrderItem> { override fun onComplete() { } override fun onNext(t: OrderItem) { […]

Android Firestore微调不加载我的文档

所以,我分配了我的var微调控制器数组从我的文档在firestore中获取数据,但这是 我明白了 这是我目前的活动。 我可以让它工作,如果我分配字符串,但最终我想从我的文档加载数据,就像我现在要做的。 这是我的 建立。 任何原因为什么? 谢谢 var db = FirebaseFirestore.getInstance() var spinnerArray = arrayOf(db.collection("KitList") .get() .addOnCompleteListener { task -> if (task.isSuccessful) { for (document in task.result) { Log.d("weight05", document.id + " => " + document.data) } } else { Log.w("error", "Error getting documents.", task.exception) } }) var newKitList = mutableListOf<String>() override fun onCreate(savedInstanceState: […]