質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1531閲覧

clear()メソッドのエラーを修正したい

DaichiNakajima

総合スコア62

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/08/31 00:44

前提・実現したいこと

はじめてのAndroidプログラムミング第4版でAndroidアプリ開発を学び始めたばかりの初心者です。以下のコードのように、共有プリファレンスのクリアを行いたいのですが、clear()メソッドのところにエラーが出てしまいます。どうやったら解決しますか?

発生している問題・エラーメッセージ

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public fun kotlin.text.StringBuilder /* = java.lang.StringBuilder /.clear(): kotlin.text.StringBuilder / = java.lang.StringBuilder */ defined in kotlin.text

該当のソースコード

言語名
kotlin
ソースコード
MainActivity.kitのソースコードです。
package com.example.janken

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.content.Intent
import android.preference.PreferenceManager
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

//暗黙の引数it gu.setOnClickListener { onJankenButtonTapped(it) } choki.setOnClickListener { onJankenButtonTapped(it) } pa.setOnClickListener { onJankenButtonTapped(it) } val pref = PreferenceManager.getDefaultSharedPreferences(this)//共有プリファレンスの内容をクリア pref.edit { clear() } } fun onJankenButtonTapped(view: View?){ val intent = Intent(this, ResultActivity::class.java) intent.putExtra("MY_HAND", view?.id) startActivity(intent) }

}

試したこと

clear()を動作させるためにimportが必要なのかと思い調べましたが、思いつきませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pref.edit { }のような記述を行ったプログラムを実行するには、build.gradle (:app)に次のような記述を加える必要があります。

gradle

1android { 2 3 (中略) 4 5 kotlinOptions { 6 jvmTarget = '1.8' 7 } 8}

ついでに、サポートライブラリーによるPreferenceManagerがAPIレベル29で非推奨になっているため、AndroidXによるPreferenceManagerを用いるために、同じbuild.gradleのdependenciesブロックに次の記述を追加してください。

gradle

1dependencies { 2 (中略) 3 4 implementation "androidx.preference:preference:1.1.1" 5 6 (中略) 7} 8

それから、Kotlinソースファイルに次のimport文を加えます。(clearではなくeditのimportが必要)

kotlin

1// import android.preference.PreferenceManager // こっちは消す 2import androidx.core.content.edit 3import androidx.preference.PreferenceManager

これでSyncしてビルドすればエラーは解消するのではないでしょうか。

投稿2020/08/31 11:38

編集2020/08/31 12:15
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaichiNakajima

2020/09/02 00:29

解答ありがとうございます! ご指摘の通り、コードを追加したのですが、 implementation "androidx.preference:preference:1.1.1"を加えたのに、 Could not find androidx.preference.preference:1.1.1:. Required by: project :app Search in build.gradle files のエラーが出てしまいました。どうすれば解決しますか?(単純なミスだったらすいません)
keicha_hrs

2020/09/02 07:39

コロンの記述位置を誤っていませんか?エラーメッセージを見ると2つのpreferenceの間がドットになっていますが、build.gradleの記述の方も同様になっていませんか?
keicha_hrs

2020/09/03 05:58

もしpreferenceのimplementationを加えるとどうしてもうまく行かないなら、ひとまず後回しにして、まず他の作業を行って肝心のeditが動作することを確認してみてはどうでしょうか。
DaichiNakajima

2020/09/17 22:59

長らく返信せずに申し訳ありませんでした!解決しました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問