permissionsdispatcher和多个@ NeedsPermission与kotlin

对于一个权限,我可以在java和kotlin中使用permissionsdispatcher – 但是当涉及到像这样的多个权限时: @NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH}) 我在kotlin上遇到一个问题 – 它不能接受多个参数 – 可以和java一起工作

无法find参数org.gradle.api.Project的方法android()

得到一个错误,当我试图在studio中编译我的项目时,我搜索了很多,没有真正的解决方案 错误:(17,0)在types为org.gradle.api.Project的根项目“booksStudioDir”上找不到参数[build_a7zf1o8ge4ow4uolz6kqzw5ov $ _run_closure2 @ 19201053]的方法android()。 这是我的构建/ gradle文件的示例 buildscript { repositories { maven { url ‘https://maven.fabric.io/public’ } } dependencies { classpath ‘io.fabric.tools:gradle:1.+’ } } apply plugin: ‘com.android.application’ apply plugin: ‘io.fabric’ android { compileSdkVersion 21 buildToolsVersion “23.0.1” defaultConfig { applicationId “com.peade.time” minSdkVersion 10 targetSdkVersion 13 } signingConfigs { release { storeFile file(“/home/bestman/Desktop/mkey/key”) storePassword “androidkeys” keyAlias “peade” […]

如何在android中将方法调用注入到另一个方法中

我有一个class, 一个叫something的领域, 一个名为setSomething的setter方法, 一个叫做onChange的方法,每次改变时都应该调用它。 我希望能够自由地添加更多的领域,并为他们所有人都有相同的行为。 我不想手动调用onChange因为, 很多样板, 代码将被写入Kotlin,所以我不想编写setter函数。 我已经能够想到的理想解决方案是在编译时每个setter方法的return之前以某种方式注入onChange调用。 我已经看过注释处理,但是显然类并不是真的在那个阶段编译的,所以我不得不重新生成整个类。 我不完全明白这一点。 另一个选项似乎是编写一个gradle插件,它将find相关的类并修改它们的字节码。 实际上,我已经开始将它作为一个纯Java项目(gradle插件是半完成的),并且已经能够find类并注入方法调用。 虽然似乎无法成功地将结果写入类文件。 这是我的(使用BCEL ): public class StateStoreInjector { public static void main(String[] args) { // Find all classes that extends StateStore Reflections reflections = new Reflections(“tr.xip.statestore”); Set<Class> classes = reflections.getSubTypesOf(StateStore.class); for (Class c : classes) { try { JavaClass clazz = Repository.lookupClass(c.getName()); JavaClass […]

IDE在android studio 3.0.1中创建一个新的活动时出错

我有问题,以创建新的活动在Android Studio 3.0.1的Windows 10,问题是,直到昨天一切工作,但现在它会引发错误,当试图创建一个新的活动,然后,不要创建它。 只能创建类或空的活动,但没有其他出现在画廊。 错误消息是: SingleRootFileViewProvider中的文件树不一致(myVirtualFile = LightVirtualFile:\ targetFile,content = VirtualFileContent {size = 69}}; nodeLength = 137; 文件长度= 69 我已经完成了所有工作,我已经下载了最新版本的Gradle,并且重新安装了Android Studio。

在自定义视图构造函数中获取android:ellipsize属性的值

如何获得自定义View (扩展TextView )中的属性android:ellipsize的值? 我尝试了这些方法,但没有奏效: Log.d(TAG, attrs.getAttributeIntValue(ANDROID_NAMESPACE, “ellipsize”, -1)); Log.d(TAG, attrs.getAttributeValue(ANDROID_NAMESPACE, “ellipsize”)); Log.d(TAG, attrs.getAttributeUnsignedIntValue(ANDROID_NAMESPACE, “ellipsize”, 111)); Log.d(TAG, attrs.getAttributeListValue(ANDROID_NAMESPACE, “ellipsize”, new String[] {“x”, “marquee”}, -1)); 注意: attrs是AttributeSet (构造函数参数), ANDROID_NAMESPACE是”http://schemas.android.com/apk/res/android” 。

Kotlin可为空的variables赋值

在Kotlin中,这个代码是否有更简短的语法: if(swipeView == null){ swipeView = view.find(R.id.swipeableView) } 首先我试过这个: swipeView ?: view.find(R.id.swipeableView) 但后来我意识到这不是一个任务,所以代码什么都不做。 然后我试着: swipeView = swipeView ?: view.find(R.id.swipeableView) 哪个工作,但有点冗长。 我会期待这样的事情: swipeView ?= view.find 但不幸的是,这是行不通的。 有没有什么办法用一个简短的语法来完成这个? 我知道我可以这样做: variable?.let { it = something } which works.

什么在我的gradle文件仍然保证警告:“配置’编译’已经过时,并已被取代’实施’”?

我有下面的gradle文件,我找不到任何仍然保证警告“ 配置”编译“已经过时,并已被替换为”实施“的任何东西 。 第一个模块Gradle文件: buildscript { repositories { maven { url ‘https://maven.fabric.io/public’ } } dependencies { classpath ‘io.fabric.tools:gradle:1.24.1’ } } repositories { maven { url ‘https://maven.fabric.io/public’ } } apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ apply plugin: ‘io.fabric’ apply plugin: ‘kotlin-kapt’ def keystorePropertiesFile = rootProject.file(“keystore.properties”) def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android […]

我必须分配什么编译时types才能获得java.util.Map的返回值

我想从另一个字体派生出一个字体。 这是我想要做的: val font : Font = this.label.getFont(); val attributes : Map = font.getAttributes(); attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); this.label.setFont(font.deriveFont(attributes)); 但是,Kotlin编译器在这一行上抱怨: val attributes : Map = font.getAttributes(); 随着消息: Type mismatch: inferred type is (Mutable)Map! but Map was expected 根据我对Javagenerics的有限理解,我知道font.getAttributes()返回一个java.util.Map ; 后一种types的参数意味着当你从这个映射中创建一个有界/关闭的genericstypes时,请指定作为第二个types参数的任何扩展java.lang.Object的东西 。 所以,当我首先尝试了以下几行: val attributes : java.util.Map = font.getAttributes(); Kotlin编译器说: 这个类不应该在Kotlin中使用。 改为使用kotlin.collections.Map或kotlin.collections.MutableMap。 还说: Type mismatch: inferred type is […]

如何让IntelliJ识别gradle生成的源代码目录?

所以,我有一个XJC javaExec,像顶部一样旋转,但IntelliJ不会识别生成的输出,尽管标记了generated-src/java 。 我需要调整插件的想法吗? 注意:插件本身是从根build.gradle 。 XJC项目: description = “Generates sources and compiles them into a Jar for $project” configurations { xjc } dependencies { xjc ‘org.glassfish.jaxb:jaxb-xjc:2.2.11’ xjc ‘org.glassfish.jaxb:jaxb-runtime:2.2.11’ } task xjc (type:JavaExec) { doFirst{ File generatedSrcDir = file(“$buildDir/generated-src/java”) if (!generatedSrcDir.exists()) { generatedSrcDir.mkdirs() } } main = “com.sun.tools.xjc.XJCFacade” classpath configurations.xjc def argsList = [ “-mark-generated”, […]

以编程方式设置android形状颜色

我正在编辑,使问题更简单,希望有助于准确的答案。 说我有以下oval形状: 如何从活动类中以编程方式设置颜色?