小编K.O*_*.Os的帖子

不推荐使用getActionView吗?

今天我决定将我的Android应用程序从Java翻译成Kotlin!:)但是当我输入这个时我很惊讶:

val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView
Run Code Online (Sandbox Code Playgroud)

Android Studio告诉我:"'getActionView(MenuItem!):查看!' 不推荐使用.在Java中弃用"

所以在问你解决方案之前我问谷歌解决方案是什么,我相信我找到了解决方案:"直接使用getActionView()."

所以我修改了我的代码:

val searchView = MenuItemCompat.getActionView() as SearchView
Run Code Online (Sandbox Code Playgroud)

getActionView()仍然交叉,所以我根本不明白......

如果你能帮助我,我会很高兴:)谢谢!

java android kotlin

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

Kotlin - 如何在列表中查找重复值的数量?

我有一个列表,例如:

val list = listOf("orange", "apple", "apple", "banana", "water", "bread", "banana")
Run Code Online (Sandbox Code Playgroud)

如何检查苹果在此列表中重复的次数?

functional-programming kotlin

18
推荐指数
2
解决办法
7466
查看次数

未找到类,使用Android Studio 3.0.1,Room,Kotlin在androidTest中清空测试套件

运行我的androidTest时遇到问题.

这是我在gradle中的设置:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 26
defaultConfig {
    applicationId "com.blabla.shoppinglistapp"
    minSdkVersion 17
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
 }
}

ext.daggerVersion = '2.11'
ext.roomVersion = '1.0.0'
ext.mockitoVersion = '2.11.0'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'

testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-android:2.8.47'

androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

// …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin android-studio android-room

14
推荐指数
1
解决办法
6779
查看次数

使用 Kotlin 内联类作为实体字段的房间数据库

我正在尝试让 Room( https://developer.android.com/topic/libraries/architecture/room ) 与 Kotlin 的内联类一起工作,如Jake Whartons 文章内联类制作出色的数据库 ID 中所述

@Entity
data class MyEntity(
    @PrimaryKey val id: ID,
    val title: String
)

inline class ID(val value: String)
Run Code Online (Sandbox Code Playgroud)

编译这个房间时抱怨说

实体和 Pojo 必须有一个可用的公共构造函数。您可以拥有一个空构造函数或一个其参数与字段(按名称和类型)匹配的构造函数。

查看生成的 Java 代码,我发现:

private MyEntity(String id, String title) {
      this.id = id;
      this.title = title;
}

// $FF: synthetic method
public MyEntity(String id, String title, DefaultConstructorMarker $constructor_marker) {
      this(id, title);
}
Run Code Online (Sandbox Code Playgroud)

神秘的是,默认构造函数现在是私有的。

String用作id( 或 a typealias)的类型时,生成的 Java 类构造函数看起来像预期的那样: …

android kotlin android-room kotlin-experimental

13
推荐指数
1
解决办法
705
查看次数

使用Android Studio 3.0在Kotlin中使用RxJava zipWith IDE

我想创建一个Observable,它从Observable中发出一些包含Interval Observable对象列表的项目,这样第一个observable中的项目就会有一些时间延迟.这是我的实现:

 val just1 = ArrayList<SomeClass1>()
Run Code Online (Sandbox Code Playgroud)

填充一些项目

fun populateJust1() {
just1.add(SomeClass1("23", 23))
just1.add(SomeClass1("24", 24))
just1.add(SomeClass1("25", 25))
}

populateJust1()
Run Code Online (Sandbox Code Playgroud)

和区间Observable压缩

Observable.fromIterable(just1)
            .zipWith(Observable.interval(2, TimeUnit.SECONDS)) { item: SomeClass1, interval: Long -> item }
            .subscribe(Consumer<SomeClass1> { someClass1 -> Log.v("someClass1", someClass1.toString()) })
Run Code Online (Sandbox Code Playgroud)

但是,IDE,Android Studio 3.0以红色方式强调了zipWith运算符,并说:

使用提供的参数不能调用以下任何函数.zipWith(((observer:Observer)→Unit)!,((t1:SomeClass1,t2:Long)→R)!)其中R不能推断; U =乐趣的长拉链(其他:((观察者:观察者)→单位)!,拉链:((t1:SomeClass1,t2:U)→R)!):可观察!在io.reactivex.Observable zipWith(ObservableSource!,BiFunction!)中定义,其中无法推断出R; U =长!为了好玩的zipWith(其他:ObservableSource!,拉链:BiFunction!):可观察!在io.reactivex.Observable zipWith中定义((Mutable)Iterable!,BiFunction!)其中U,R无法推断出有趣的zipWith(其他:( Mutable)Iterable!,zipper:BiFunction!):Observable!在io.reactivex.Observable zipWith中定义((Mutable)Iterable!,((t1:SomeClass1,t2:Long)→R)!)其中无法推断出R; U =乐趣的长拉链(其他:(可变)Iterable!,拉链:((t1:SomeClass1,t2:U)→R)!):可观察!在io.reactivex.Observable中定义

怎么了?我刚从Java类转换了这个代码,其中一切都是正确的

java kotlin rx-java rx-java2

11
推荐指数
2
解决办法
4775
查看次数

RecyclerView 使用 DiffUtil,防止在更改时滚动底部

我的recyclerViev,特别是滚动有问题。我有一些列表,它是实时更新的,添加了一些项目,删除了一些项目,并且所有内容都按某个参数排序。因此,最初在列表中的第一个项目,可以更改其参数,排序后将处于不同的位置。

因此recyclerView,例如,我专注于初始项目,并且在更改之后,当某些项目具有“更好”的参数时,会更改该初始项目的位置。

问题是,我想专注于新项目,当我不滚动时使用“更好”的参数,但是当我通过触摸滚动时我不想专注于它(所以我的触摸不会被滚动到当前列表中的第一项)。

所以我不想在每次更改recyclerView数据后强制执行此代码:

recyclerView.scrollToPosition(0);
Run Code Online (Sandbox Code Playgroud)

因为正如我所说,当我触摸我的recyclerView列表并向下查看其他项目时,我会被这个卷轴打断,同时我的列表也会发生变化。

有没有办法做到这一点?

具体来说,我正在使用DiffUtilDiffCallback,以在我当前的 recyclerView 列表发生变化时支持动画 - 它将旧列表与另一个新列表进行比较并应用所有想要的动画和通知(添加、删除、更改项目位置)。所以我从不打电话

notifyDataSetChanged
Run Code Online (Sandbox Code Playgroud)

或类似的东西

这是我的 DiffUtil 回调:

  public static class DevicesDiffCallback extends DiffUtil.Callback{

    List<DeviceInfo> oldDevices;
    List<DeviceInfo> newDevices;

    public DevicesDiffCallback(List<NexoDeviceInfo> newDevices, List<NexoDeviceInfo> oldDevices) {
        this.newDevices = newDevices;
        this.oldDevices = oldDevices;
    }

    @Override
    public int getOldListSize() {
        return oldDevices != null ? oldDevices.size() : 0;
    }

    @Override
    public int getNewListSize() {
        return newDevices != null ?  newDevices.size() : 0;
    } …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

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

如何配置 Android Studio 以在项目中包含包含 pom.xml 的配置文件夹?

我正在尝试使用 Kotlin DSL https://blog.jetbrains.com/teamcity/2019/03/configuration-as-code-part-1-getting-started-with-kotlin-设置 TeamCity“项目配置即代码”单线/

我在 TeamCity 中创建了一个示例项目,指向一个空的 Android Studio 项目,其中包含我在 Github 中发布的空活动。我已经在 TeamCity GUI 中为该项目启用了 Kotlin DSL 配置。

在 TeamCity.teamcity通过包含pom.xml. 此文件夹是顶级项目文件夹,与app模块一起位于根目录中。但是,当我在settings.ktsIDE 中检查代码时,并没有给我任何提示。我无法对 Kotlin DSL 配置代码使用自动完成功能,我的 IDE 中没有任何特殊格式或代码时间 lint 检查

我试图按照上述博客指南进行操作,但不幸的是我无法右键单击该pom.xml文件并且Add as Maven在 Android Studio中看不到任何选项。此外,我看不到任何外部库被添加到我的与 TeamCity DSL 相关的项目中,这当然意味着pom.xml文件的依赖项没有得到处理。

我正在使用 Android Studio 4.0

这是pom.xmlTeamCity 添加到我的 Android Studio 项目(在.teamcity文件夹下):

<?xml version="1.0"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <name>KotlinTeamcityDSL Config DSL Script</name>
  <groupId>KotlinTeamcityDSL</groupId>
  <artifactId>KotlinTeamcityDSL_dsl</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>org.jetbrains.teamcity</groupId> …
Run Code Online (Sandbox Code Playgroud)

teamcity gradle maven kotlin android-studio

8
推荐指数
0
解决办法
241
查看次数

在 Android Studio 中使用 Jetpack Compose 时,我看不到预览的交互模式

我正在使用 Android Studio 北极狐 | 2020.3.1 Beta 2 预览中看不到交互模式图标。这个版本支持这样的选项吗?

我希望能够与预览交互(例如单击按钮),而无需在设备上部署 apk:

在此处输入图片说明

现在我只看到“部署预览”选项。使用交互模式时我缺少什么吗?

android android-studio android-jetpack-compose

8
推荐指数
2
解决办法
409
查看次数

java.lang.IllegalArgumentException:对于Kotlin和WebView,指定为非null的参数为null

我试图用自定义HTML字符串填充我的WebView并尝试在未加载时显示进度,并在完成时隐藏它.

这是我的代码:

webView.settings.javaScriptEnabled = true
webView.loadDataWithBaseURL(null, presentation.content, "text/html", "utf-8", null)

webView.webViewClient = object : WebViewClient() {

  override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) {
    super.onPageStarted(view, url, favicon)
    webViewProgressBar.visibility = ProgressBar.VISIBLE
    webView.visibility = View.INVISIBLE
  }

  override fun onPageCommitVisible(view: WebView, url: String) {
    super.onPageCommitVisible(view, url)
    webViewProgressBar.visibility = ProgressBar.GONE
    webView.visibility = View.VISIBLE
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误,这不是指向我的代码的任何行:

E/AndroidRuntime:致命异常:主要

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter favicon
at com.hidglobal.tmt.app.mobiBadge.ui.presentation.PresentationActivity$showPresentation$1.onPageStarted(PresentationActivity.kt)
at com.android.webview.chromium.WebViewContentsClientAdapter.onPageStarted(WebViewContentsClientAdapter.java:215)
at org.chromium.android_webview.AwContentsClientCallbackHelper$MyHandler.handleMessage(AwContentsClientCallbackHelper.java:20)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method) …
Run Code Online (Sandbox Code Playgroud)

android android-webview kotlin

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

如何为 macos 桌面应用程序启用 Flutter 互联网权限?

我正在尝试开发也可以在 destkop 上运行的 Flutter 应用程序。这个应用程序正在使用 http 包:

import 'package:http/http.dart'
Run Code Online (Sandbox Code Playgroud)

当我尝试执行 http 请求时,出现此异常:

 SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = firebasedynamiclinks.googleapis.com, port = 443
Run Code Online (Sandbox Code Playgroud)

此应用在 Android 和 iOS 上运行,如何为 macos 启用此权限?

我正在使用 IntelliJ IDE,所以这个答案并不让我满意Flutter - http.get 在 macos 构建目标上失败:连接失败

dart flutter flutter-desktop flutter-http

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