今天我决定将我的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()仍然交叉,所以我根本不明白......
如果你能帮助我,我会很高兴:)谢谢!
我有一个列表,例如:
val list = listOf("orange", "apple", "apple", "banana", "water", "bread", "banana")
Run Code Online (Sandbox Code Playgroud)
如何检查苹果在此列表中重复的次数?
运行我的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) 我正在尝试让 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 类构造函数看起来像预期的那样: …
我想创建一个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类转换了这个代码,其中一切都是正确的
我的recyclerViev,特别是滚动有问题。我有一些列表,它是实时更新的,添加了一些项目,删除了一些项目,并且所有内容都按某个参数排序。因此,最初在列表中的第一个项目,可以更改其参数,排序后将处于不同的位置。
因此recyclerView,例如,我专注于初始项目,并且在更改之后,当某些项目具有“更好”的参数时,会更改该初始项目的位置。
问题是,我想专注于新项目,当我不滚动时使用“更好”的参数,但是当我通过触摸滚动时我不想专注于它(所以我的触摸不会被滚动到当前列表中的第一项)。
所以我不想在每次更改recyclerView数据后强制执行此代码:
recyclerView.scrollToPosition(0);
Run Code Online (Sandbox Code Playgroud)
因为正如我所说,当我触摸我的recyclerView列表并向下查看其他项目时,我会被这个卷轴打断,同时我的列表也会发生变化。
有没有办法做到这一点?
具体来说,我正在使用DiffUtil的DiffCallback,以在我当前的 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) 我正在尝试使用 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) 我正在使用 Android Studio 北极狐 | 2020.3.1 Beta 2 预览中看不到交互模式图标。这个版本支持这样的选项吗?
我希望能够与预览交互(例如单击按钮),而无需在设备上部署 apk:
现在我只看到“部署预览”选项。使用交互模式时我缺少什么吗?
我试图用自定义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) 我正在尝试开发也可以在 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 构建目标上失败:连接失败