小编Eri*_*rik的帖子

Android Studio:参数“目录”不是目录

当我尝试构建我的项目时,我遇到了这样一个错误:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:dataBindingGenBaseClassesDebug'.
> Parameter 'directory' is not a directory
Run Code Online (Sandbox Code Playgroud)

android android-build android-studio build.gradle android-gradle-plugin

15
推荐指数
1
解决办法
5712
查看次数

我可以在Android Studio窗口内(或顶部)运行Android模拟器吗?

我在全屏幕上使用Android Studio上的Android Studio(最大化).启动Android Emulator时,其窗口显示在常规桌面上.这需要从一个窗口切换到另一个窗口.我希望能够同时查看两个窗口,而无需在Android Studio中退出全屏模式.

有没有办法将Android模拟器窗口移动到我的Android Studio窗口内(或顶部)?

macos android-studio

11
推荐指数
1
解决办法
1011
查看次数

如何在Kotlin中无限重复序列?

我想无限重复一个T元素Sequence<T>.使用kotlin.collections.asSequence无法完成此操作.例如:

val intArray = intArrayOf(1, 2, 3)
val finiteIntSequence = intArray.asSequence()
val many = 10
finiteIntSequence.take(many).forEach(::print)
// 123
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.我期望某种kotlin.collections.repeat功能存在,但没有,所以我自己实现了一个(例如为此IntArray):

var i = 0
val infiniteIntSequence = generateSequence { intArray[i++ % intArray.size] }
infiniteIntSequence.take(many).forEach(::print)
// 1231231231
Run Code Online (Sandbox Code Playgroud)

这是非常必要的,所以我觉得必须有一个更实用,更简洁的方法来做到这一点.如果它存在,Kotlin的标准方式是重复集合/数组a(n)(in)有限次数是什么?

collections sequence kotlin

10
推荐指数
2
解决办法
2658
查看次数

如何在IntelliJ IDEA中禁用"粘贴时将Java转换为Kotlin"?

当IntelliJ IDEA检测到我将一段复制的Java代码粘贴到Kotlin文件中时,它允许我将粘贴的Java转换为Kotlin.该对话框包含"下次不再询问复选框".我选中了此框并选择了"是",但现在我要撤消我的默认选择.我该怎么做呢?

我在IntelliJ IDEA的首选项中查找并搜索过,但没有找到相应的复选框.它实际上是在设置中,还是我可以以某种方式重置默认复选框选择?

java configuration intellij-idea kotlin

9
推荐指数
1
解决办法
1205
查看次数

如何确保在 Android 单元测试中调用 ViewModel#onCleared?

这是我的 MWE 测试类,它依赖于 AndroidX、JUnit 4 和 MockK 1.9:

class ViewModelOnClearedTest {
    @Test
    fun `MyViewModel#onCleared calls Object#function`() = mockkObject(Object) {
        MyViewModel::class.members
            .single { it.name == "onCleared" }
            .apply { isAccessible = true }
            .call(MyViewModel())

        verify { Object.function() }
    }
}

class MyViewModel : ViewModel() {
    override fun onCleared() = Object.function()
}

object Object {
    fun function() {}
}
Run Code Online (Sandbox Code Playgroud)

注意:该方法在超类中受保护ViewModel

我想验证MyViewModel#onCleared调用Object#function. 上面的代码通过反射实现了这一点。我的问题是:我可以以某种方式运行或模拟 Android 系统以便onCleared调用该方法,这样我就不需要反射吗?

来自onClearedJavaDoc:

当这个 ViewModel 不再使用时会调用这个方法,并且会被销毁。

那么,换句话说,我如何创建这种情况,以便我知道onCleared被调用并且我可以验证它的行为?

android unit-testing android-testing android-viewmodel android-architecture-components

9
推荐指数
3
解决办法
3620
查看次数

为什么可以在*之后使用函数中的内容导入包*?

我在MATLAB R2014b上,有一个问题,我将通过以下示例说明.

MWE可以如下制作或在此处下载为.zip文件.

+test在路径上创建一个包文件夹,其中包含四个函数文件:

+test
    a.m
    b.m
    c.m
    d.m
Run Code Online (Sandbox Code Playgroud)

内容a.m:

function a
disp 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

内容b.m:

function b
a
Run Code Online (Sandbox Code Playgroud)

如果从命令行运行b,则必须先导入test包(import test.*)或运行test.b.

运行b将导致错误,因为函数的范围b不包含函数a.我们必须先导入它才能使用它.为此,我创造了c.m:

function c
import test.*
a
Run Code Online (Sandbox Code Playgroud)

现在运行c正常.

现在我的问题.如果我c.m改为(保存在d.m):

function d
a
import test.*
Run Code Online (Sandbox Code Playgroud)

即在调用package函数之后发出import命令a.运行d仍然可以正常工作,就好像导入命令的位置d.m无关紧要.导入似乎在调用函数之前发生a,这在d.m导入之前的行上发生.

为什么会这样呢?这是预期的行为,它的用途是什么?MATLAB如何以及以何种顺序读取.m文件并对其进行处理?更偏离主题,但总的来说:与MATLAB相比,如何导入以不同语言处理的包,命令的顺序是否重要?

我基于注释的先发制人的结论:最好只在MATLAB代码开头或附近使用导入函数.这清楚地显示了导入的内容在整个元素中可用(例如,功能).它还可以防止错误的假设,即在导入之前,内容尚未可用或引用具有相同名称的其他内容.

import matlab packages package

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

可以/应该将kotlinc.xml添加到我的版本控制忽略文件中吗?

在IntelliJ IDEA(2017.1.2)中设置Java项目的过程中的某个位置,显示了一个.idea/名为的目录kotlinc.xml.我对Kotlin什么都不做,但文件里面有内容:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="KotlinCommonCompilerArguments">
    <option name="languageVersion" value="1.1" />
    <option name="apiVersion" value="1.1" />
  </component>
</project>
Run Code Online (Sandbox Code Playgroud)

这似乎是一些通用的配置,但我可以想象一些特定于项目的(而不仅仅是我的本地IDEA特定的)Kotlin配置存储在那里.因此,一般情况下,在版本控制下共享项目(例如Git)时,是否可以忽略此文件,即不提交它并在线发布它?还是应该被忽略?

java version-control intellij-idea kotlin

7
推荐指数
2
解决办法
1447
查看次数

如何在 IntelliJ IDEA/Android Studio 中添加自定义 Kotlin 后缀补全?

似乎我无法在 IntelliJ IDEA (2018.3) 和 Android studio (3.2.1) 中为 Kotlin 添加自定义后缀补全。如果我去偏好 | 编辑 | 一般 | Postfix Completion 并单击添加按钮,Kotlin 没有选项(请参见下面的屏幕截图)。是否可以添加新的后缀补全?

我想添加一个.with后缀补全,这样就x.with可以扩展到

with(x) {
    // The caret should go here
}
Run Code Online (Sandbox Code Playgroud)

旁注:我认为很遗憾没有with开箱即用的后缀完成。

IntelliJ IDEA(2018.3)和Android Studio(3.2.1)截图:

IntelliJ IDEA 后缀补全设置 Android Studio 后缀补全设置

intellij-idea kotlin android-studio

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

Google Inbox如何显示覆盖键盘的小吃吧?

Google Inbox如何显示小吃栏(覆盖,分层)键盘?这不是默认行为,我已经使用基本协调器布局,键盘打开和快餐栏进行了测试:默认行为是显示键盘后面的零食栏.对于这个问题有很多答案:'如何在键盘上方显示小吃栏',但我还没有找到如何重现谷歌自己的收件箱应用程序的零食栏行为.

你能告诉我如何实现这个目标吗?

android android-layout android-activity snackbar android-snackbar

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

ItemTouchHelper.Callback方法onChildDraw和onChildDrawOver之间有什么区别?

这两种方法的文档相同:

扩展此类时,是否应该覆盖任何一个或两个或特定一个,并且您想编辑绘制子级的方式?有什么不同?不同用例的/示例是什么?区别是否类似于这些方法之间的区别?

android android-animation android-recyclerview

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