小编ubu*_*oid的帖子

什么是Kotlin模块?

在Kotlin文档中,他们提到了某种模块,例如在修饰符的文档internal.

但是我找不到任何术语模块本身的定义.那模块是什么意思?

kotlin

28
推荐指数
2
解决办法
7609
查看次数

List.iterator()线程安全吗?

在Java中:是否是List.iterator()线程安全的,即返回的迭代器是在任何时候反映列表的当前状态还是仅在列表创建时反映列表的状态?

java collections iterator list thread-safety

20
推荐指数
2
解决办法
2万
查看次数

EditText:通过setText()或键盘输入区分文本更改

我有一个EditTextView,它是由setText()我的代码和用户通过(软/硬)键盘编辑的 - 如果可能的话,通过语音输入.我希望以不同于普通用户输入的方式处理我的代码所做的输入:如果发生用户输入,则应触发内部事件.但我不知道如何区分两者.以前 - 在模拟器上开发时 - 我使用该onKeyDown()方法来捕获用户输入.但是,当在真实设备上进行测试时,我发现,这onKeyDown()不是从软键盘输入触发的.此外,语音输入不会被识别,但我认为这是一个小缺陷.所以这个解决方案对我来说别无选择.

另一方面,有onTextChanged()方法,但这是由两个setText()和键盘输入触发.那么如何区分两者或哪些方法仅由用户输入调用,而不是在使用时setText(),我可以覆盖它吗?

android input android-edittext

16
推荐指数
2
解决办法
5499
查看次数

未解决的参考:在使用kapt时,Kotlin在清理后需要2个构建来获取代码

在我们的Android应用程序中,我们使用DBFlow来访问SQLite数据库.我们通过Kotlin引用DBFlow生成的类.我们已经意识到我们拥有模型类以及Java中的数据库类,因为在Kotlin中编写这些类时,代码生成将不起作用.

但是,我们仍然需要在每个项目清理后构建代码两次.在设备上执行第一个构建会导致ClassNotFoundExceptions看似随机的Kotlin类(即使它们不访问由DBFlow或我们定义的任何模型类生成的代码).在启用Proguard的编译时已经报告了相同的内容,当然这个版本无法构建.第二次构建总是成功的.

有趣的是,代码生成已经在第一次运行时工作 - 类在那里并且也被IDE选中.但编译器以某种方式无法找到它们让我认为代码生成在构建过程中发生得太晚了.另一方面,如上所述,还存在未找到的类,其不必对代码生成和/或注释处理做任何事情.

那么这个问题比第二次构建有更好的解决方案吗?

作为参考,我们的应用程序的相关部分build.gradle看起来像这样 - 就像DBFlow文档建议的那样:

def dbflow_version = "3.0.0-beta4"

dependencies {
    kapt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
    compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
    compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
}

kapt {
   generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)

编辑:我发现每次对代码所做的更改都需要重建两次.如果我之前没有清理过,它会在第一个版本中正确编译,但是这些更改根本没有被拾取.

android annotations kotlin

16
推荐指数
1
解决办法
943
查看次数

执行slash命令作为slack bot

我正在编写一个简单的slack bot,它应该在被调用时执行其他slack命令.一切都已启动并运行,但是这个机器人问题的松弛命令似乎没有被执行.

例如,我的机器人/giphy kitten每小时发布一次,消息就像通道中的那样(因此发送方似乎有效),但是斜杠命令本身不会被执行.如果我自己将相同的命令发布到同一个频道,它会按预期工作.机器人不允许执行斜杠命令吗?

slack-api slack

14
推荐指数
2
解决办法
8127
查看次数

将通知固定到通知区域的顶部

我有一个通知,每隔三秒刷新一次(即发送).我已经设置了FLAG_ONGOING_EVENT标志和FLAG_NO_CLEAR标志,以便始终显示.问题是,如果例如下载处于活动状态(在通知区域中显示进度条),则两个通知都会不断切换位置,因为它们每隔几秒刷新一次.

如何将我的通知固定到列表顶部(或某个静态位置),以便每次通过调用更新它时它都会停止跳转NotificationManager.notify()

编辑:这是更新通知的代码.它每三秒钟运行一次.

Notification notification = new Notification();
notification.contentView = appBarNotification; // this sets the changed notification content
notification.flags |= Notification.FLAG_ONGOING_EVENT;  
notification.flags |= Notification.FLAG_NO_CLEAR; 

Intent notificationIntent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
notification.icon = R.drawable.icon;

nm.notify(APP_BAR_NOTIFICATION, notification);
Run Code Online (Sandbox Code Playgroud)

notifications android

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

在Prolog中解析具有多个数字的数字

我有以下简单的表达式解析器:

expr(+(T,E))-->term(T),"+",expr(E).
expr(T)-->term(T).

term(*(F,T))-->factor(F),"*",term(T).
term(F)-->factor(F).

factor(N)-->nat(N).
factor(E)-->"(",expr(E),")".

nat(0)-->"0".
nat(1)-->"1".
nat(2)-->"2".
nat(3)-->"3".
nat(4)-->"4".
nat(5)-->"5".
nat(6)-->"6".
nat(7)-->"7".
nat(8)-->"8".
nat(9)-->"9".
Run Code Online (Sandbox Code Playgroud)

但是,这仅支持1位数字.在这种情况下,如何解析多位数字?

grammar prolog dcg

10
推荐指数
1
解决办法
1818
查看次数

如何使用InputConnectionWrapper?

我有一个EditText.现在我想让用户对此进行所有更改EditText并使用它们,然后手动将它们插入到EditText.我不希望用户直接更改文本EditText.这应该只通过我的代码完成(例如使用replace()setText()).

我搜索了一下,发现了一个有趣的类名InputConnectionWrapper.根据javadoc,它应作为给定的代理InputConnection.所以我将其子类化为:

private class EditTextInputConnection extends InputConnectionWrapper {

    public EditTextInputConnection(InputConnection target, boolean mutable) {
        super(target, mutable);
    }

    @Override
    public boolean commitText(CharSequence text, int newCursorPosition) {
                    // some code which takes the input and manipulates it and calls editText.getText().replace() afterwards
        return true;
    }

}
Run Code Online (Sandbox Code Playgroud)

为了初始化包装器,我在EditText-subclass中覆盖了以下方法:

public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    InputConnection con = super.onCreateInputConnection(outAttrs);
    EditTextInputConnection connectionWrapper = new EditTextInputConnection(con, true);
    return connectionWrapper;
} …
Run Code Online (Sandbox Code Playgroud)

android user-input input android-edittext

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

如何强制跟踪器重新索引文件夹?

我正在使用跟踪器索引工具来搜索我的Ubuntu 10.10 amd64系统上的文件.最近我将一些文件添加到一个文件夹中,我想知道如何强制跟踪器重新索引此文件夹,以便我能够对这些文件执行搜索查询.

有任何想法吗?终端命令就足够了.

linux indexing ubuntu tracker

6
推荐指数
0
解决办法
4266
查看次数

如何抑制过多的xpath输出?

usr/bin/xpath5.16在外壳程序脚本中使用xpath(如Mac OS X 10.9中提供的)来解析XML文件中的某些值,效果很好。但是,它给了我一些我不想在脚本中看到的详细输出。我实际上只想将结果(属性的内容)存储在变量中。

content=$(xpath ../../AndroidManifest.xml /manifest/@android:versionCode)
echo "$content"
Run Code Online (Sandbox Code Playgroud)

执行后,该变量content确实包含该属性的内容,但是我也想摆脱一些冗长的输出。这里是:

Found 1 nodes:
-- NODE --

 android:versionCode="38"
Run Code Online (Sandbox Code Playgroud)

注意:输出末尾的“ 38”源自echo "$content"其余的行xpath

xml shell xpath

4
推荐指数
1
解决办法
1489
查看次数