タグ付けされた質問 「kotlin」

Kotlinは、JetBrainsに支えられた、静的に型付けされたオープンソースのプログラミング言語です。KotlinはOOPと機能の機能を組み合わせ、相互運用性、安全性、明確性、およびツールのサポートに重点を置いています。現在、JVMとJavaScriptを対象としており、Androidで公式にサポートされている言語です。


9
KotlinフラグメントのビューにアクセスしようとするとNullPointerException
FragmentsでKotlin Android拡張機能を使用する方法 内部onCreateView()で使用すると、次のNullPointerException例外が発生します。 原因:java.lang.NullPointerException:nullオブジェクト参照で仮想メソッド 'android.view.View android.view.View.findViewById(int)'を呼び出そうとしました フラグメントコードは次のとおりです。 package com.obaied.testrun.Fragment import android.os.Bundle import android.support.v4.app.Fragment import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.obaied.acaan.R import kotlinx.android.synthetic.main.fragment_card_selector.* public class CardSelectorFragment : Fragment() { val TAG = javaClass.canonicalName companion object { fun newInstance(): CardSelectorFragment { return CardSelectorFragment() } } override fun onCreateView(inflater: LayoutInflater?, …

6
Kotlin文字列テンプレートでのフォーマット
Kotlinには、文字列テンプレートと呼ばれる優れた機能があります。私はそれを本当に愛しています。 val i = 10 val s = "i = $i" // evaluates to "i = 10" しかし、テンプレートに書式を設定することは可能ですか?たとえば、kotlinの文字列テンプレートでDoubleをフォーマットしたいのですが、少なくとも小数点の後に桁数を設定します。 val pi = 3.14159265358979323 val s = "pi = $pi??" // How to make it "pi = 3.14"?

10
Kotlinのリストに「追加」、「削除」、「欠けているマップ」などがありませんか?
Javaでは、次のことができます public class TempClass { List<Integer> myList = null; void doSomething() { myList = new ArrayList<>(); myList.add(10); myList.remove(10); } } しかし、以下のようにKotlinに直接書き換えると class TempClass { var myList: List<Int>? = null fun doSomething() { myList = ArrayList<Int>() myList!!.add(10) myList!!.remove(10) } } リストから検索addおよびremove機能しないというエラーが発生しました 私はそれをArrayListにキャストすることを回避しますが、それをキャストする必要があるのは奇妙ですが、Javaではキャストは必要ありません。そして、それは抽象クラスListを持つ目的を無効にします class TempClass { var myList: List<Int>? = null fun …

7
Kotlin Androidでデータクラスの空のコンストラクターを作成する方法
データクラスに10個以上のパラメーターがあります。空のコンストラクターでデータクラスを初期化し、セッターを使用していくつかのパラメーターの値のみを設定し、オブジェクトをサーバーに渡します。 data class Activity( var updated_on: String, var tags: List<String>, var description: String, var user_id: List<Int>, var status_id: Int, var title: String, var created_at: String, var data: HashMap<*, *>, var id: Int, var counts: LinkedTreeMap<*, *>, ) 使用法: このようなものは簡単になります val activity = Activity(); activity.title = "New Computer" sendToServer(activity) ただし、コンストラクタの作成中にすべての引数を渡す必要があります。上記のように単純化するにはどうすればよいですか? val …
195 android  kotlin 

6
Room Persistence libの自動インクリメントとして主キーを作成する方法
Entity(Room Persistence lib)クラスのFoodを作成しfoodIdています。ここで、自動インクリメントとして作成します。 @Entity class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double) { @PrimaryKey var foodId: Int = 0 var calories: Double = 0.toDouble() } foodId自動インクリメントフィールドを設定するにはどうすればよいですか?

2
Kotlinのリスト型と配列型の違い
ListとArrayタイプの違いは何ですか? それらで同じ操作を行うことができるようです(ループ、フィルター式など)、動作や使用法に違いはありますか? val names1 = listOf("Joe","Ben","Thomas") val names2 = arrayOf("Joe","Ben","Thomas") for (name in names1) println(name) for (name in names2) println(name)
192 kotlin 

8
Android 8.1へのアップグレード後にstartForegroundが失敗する
電話を8.1 Developer Previewにアップグレードした後、バックグラウンドサービスが正しく起動しなくなりました。 私の長期実行サービスでは、startForegroundメソッドを実装して、作成時に呼び出される進行中の通知を開始しました。 @TargetApi(Build.VERSION_CODES.O) private fun startForeground() { // Safe call, handled by compat lib. val notificationBuilder = NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID) val notification = notificationBuilder.setOngoing(true) .setSmallIcon(R.drawable.ic_launcher_foreground) .build() startForeground(101, notification) } エラーメッセージ: 11-28 11:47:53.349 24704-24704/$PACKAGE_NAMEE/AndroidRuntime: FATAL EXCEPTION: main Process: $PACKAGE_NAME, PID: 24704 android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for …

4
標準のKotlinライブラリで利用できるJava 8 Stream.collectの同等のものは何ですか?
Java 8では、Stream.collectコレクションの集約を可能にするものがあります。Kotlinでは、おそらくstdlibの拡張関数のコレクションとして以外は、これは同じ方法で存在しません。しかし、さまざまなユースケースでの同等性が何であるかは明らかではありません。 たとえば、JavaDocCollectorsの上部には Java 8用に記述された例があり、それらをKolinに移植する場合、異なるJDKバージョンではJava 8クラスを使用できないため、異なる方法で記述する必要があります。 Kotlinコレクションの例を示すオンラインのリソースに関しては、それらは通常は取るに足らないものであり、実際に同じ使用例と比較することはできません。Java 8用に文書化されているようなケースに本当に一致する良い例は何Stream.collectですか?リストがあります: 名前をリストに蓄積する 名前をTreeSetに蓄積する 要素を文字列に変換し、コンマで区切って連結します 従業員の給与の合計を計算します 部門別のグループ従業員 部門ごとの給与の合計を計算する 生徒を合格と不合格に分ける 上記のリンクのJavaDocの詳細を使用。 注: この質問は、作者が意図的に作成して回答したものであり(自己回答式の質問)、一般的に尋ねられるKotlinトピックに対する慣用的な回答がSOにあります。また、現在のKotlinには正確ではない、Kotlinのアルファ用に書かれたいくつかの本当に古い回答を明確にするためにも。

2
Kotlinでは、null許容値を処理し、それらを参照または変換する慣用的な方法は何ですか
null許容型がある場合は、Xyz?それを参照するか、null許容型に変換しXyzます。Kotlinでこれを行う慣用的な方法は何ですか? たとえば、次のコードはエラーです: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?" しかし、最初にnullをチェックすると許可されますが、なぜですか? val something: Xyz? = createPossiblyNullXyz() if (something != null) { something.foo() } 値が本当に絶対にないことを確信していると仮定してnull、ifチェックを必要とせずに値を変更または処理するにはどうすればよいnullですか?たとえば、ここではマップから値を取得していますが、存在が保証され、結果get()はnot nullです。しかし、私はエラーがあります: val map = mapOf("a" to 65,"b" to 66,"c" …


8
Kotlinでデータクラスを拡張する
データクラスは、Javaの昔ながらのPOJOに取って代わるようです。これらのクラスが継承を可能にすることはかなり期待できますが、データクラスを拡張する便利な方法はありません。私が必要なのはこのようなものです: open data class Resource (var id: Long = 0, var location: String = "") data class Book (var isbn: String) : Resource() 上記のコードは、component1()メソッドの衝突により失敗します。dataアノテーションを1つのクラスだけに残しても、機能しません。 おそらく、データクラスを拡張する別のイディオムがありますか? UPD:子の子クラスdataのみに注釈を付ける場合がありますが、注釈はコンストラクタで宣言されたプロパティのみを処理します。つまり、すべての親のプロパティを宣言してopenオーバーライドする必要があります。 open class Resource (open var id: Long = 0, open var location: String = "") data class Book ( override var id: Long = …

6
Kotlinでリストをマップに変換する方法は?
たとえば、次のような文字列のリストがあります。 val list = listOf("a", "b", "c", "d") そして、文字列がキーであるマップに変換したいと思います。 この.toMap()関数を使用する必要があることはわかっていますが、その方法がわかりません。また、その例も見ていません。
169 dictionary  kotlin 

30
エラー:タスク ':app:clean'の実行に失敗しました。ファイルを削除できません
Android Studio Gradleプロジェクト(主にKotlinコードを含む)を再構築しようとしていますがUnableToDeleteFileException、クリーニング/再構築プロセス中にがスローされ始めました。 Execution failed for task ':app:clean'. > Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar これは、プロジェクトのパッケージ構造を変更しようとした後に起こりました。残念ながら、私はAndroid Studioを介してリファクタリングするのではなく、ソースフォルダーの名前を変更して移動しましたが、これは悪い考えでした。 私はこの問題の解決策を一日中探していましたが、これらは私が役に立たないように試みたものです: Gradle同期を実行します。 Java JREおよびJava SDKを再インストールします。 Android Studioの最新バージョン(1.4)を再インストールします。 以前のASバージョン(1.3)にロールバックします。 ASキャッシュを無効にして再起動します。 プロジェクトディレクトリ内のgradleおよび.gradleディレクトリを削除します。 .gradleユーザーディレクトリのディレクトリを削除しています。 gradlew cleanASターミナルから実行。 手動でソースを新しいプロジェクトにコピーします(プロジェクト間でそれがどういうわけか持続するという奇妙なことです...) 私が少し成功して試しましたが、エラーが再び発生する前に、もう一度クリーンアップして再構築するだけにしておきます: ASを閉じ、手動でビルドファイルを削除し、再度開きます。 java.exeASの実行中にプロセスを強制終了します(これは技術的には毎回実行できますが、面倒でビルドプロセスの速度が低下します)。 したがって、Javaプロセスをコンパイルすると、なんらかの理由でビルドファイルがロックされる可能性がありますが、Kotlinにも関係している可能性があります。私が取り組んでいる(より成熟した)Java Androidプロジェクトがありますが、クリーニングするとこのエラーを再現できません。それは私のKotlinプロジェクトでのみ発生するようです。 更新: この問題は、Kotlin Androidプラグインが原因であることがわかりました。apply plugin: 'kotlin-android'モジュールのbuild.gradleファイルから削除すると問題が消え、再度挿入すると問題が再発します。これについての洞察を提供してください。 アップデート2: 最後の更新は原因ではありません。プロジェクトにKotlinファイルが含まれている場合、再構築とクリーニングが失敗することがわかりました。すべてのKotlinファイルが削除されても、バックグラウンドJavaプロセスが強制終了されるまで失敗し続けます。つまり、ビルドファイルになんらかのロックがかかります。詳細とバグの再現手順を記載したバグをここに提出しました:KT-9440


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.