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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

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

Q&A

解決済

【Kotlin】Unresolved referenceが解決できず

kenta0228
kenta0228

総合スコア20

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

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

1回答

1グッド

1クリップ

24192閲覧

投稿2019/05/10 22:55

前提・実現したいこと

はじめてのAndroidプログラミング 第4版
Chapter11:My Alarm Clockで下記エラー解決できず困っています。

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

com/example/kenta/myalarmclock/MainActivity.kt Unresolved reference: OnDateSelectedListener 'onSelected' overrides nothing Unresolved reference: format 'onPositiveClick' overrides nothing Unresolved reference: requestDimissKeyguard Unresolved reference: FLAG_TURN_SCREEN_ON Unresolved reference: FLAG_SHOW_WHEN_LOCKED Unresolved reference: FLAG_TURN_SCREEN_ON Unresolved reference: FLAG_SHOW_WHEN_LOCKED Unresolved reference: FLAG_DISMISS_KEYGUARD > Task :app:buildInfoGeneratorDebug

該当のソースコード

Kotlin

1 2package com.example.kenta.myalarmclock 3 4import android.app.AlarmManager 5import android.app.KeyguardManager 6import android.app.PendingIntent 7import android.content.Context 8import android.content.Intent 9import android.icu.text.SimpleDateFormat 10import android.os.Build 11import androidx.appcompat.app.AppCompatActivity 12import android.os.Bundle 13import android.provider.ContactsContract 14import android.widget.Toast 15import kotlinx.android.synthetic.main.activity_main.* 16import java.lang.IllegalArgumentException 17import java.text.DateFormat 18import java.text.ParseException 19import java.util.* 20import java.util.regex.Pattern 21 22class MainActivity : AppCompatActivity(), TimeAlertDialog.Listener 23 , DatePickerFragment.OnDateSelectedListener 24 , TimePickerFragment.OnTimeSelectedListener { 25 26 override fun getUp() { 27 finish() 28 } 29 30 override fun onSelected(year: Int, month: Int, date: Int) { 31 val c = Calendar.getInstance() 32 c.set(year, month, date) 33 dateText.text = DateFormat.format("yyyy/MM/dd", c) 34 } 35 36 override fun onSelected(hourOfDay: Int, minute: Int) { 37 timeText.text = "%1$02d:%2$02d".format(hourOfDay, minute) 38 } 39 40 override fun onPositiveClick() { 41 finish() 42 } 43 44 override fun snooze() { 45 val calendar = Calendar.getInstance() 46 calendar.timeInMillis = System.currentTimeMillis() 47 calendar.add(Calendar.MINUTE, 5) 48 setAlarmManager(calendar) 49 finish() 50 } 51 52 override fun onCreate(savedInstanceState: Bundle?) { 53 super.onCreate(savedInstanceState) 54 55 if (intent?.getBooleanExtra("onReceive", false) == true) { 56 when { 57 Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1 -> { 58 setShowWhenLocked(true) 59 setTurnScreenOn(true) 60 val keyguardManager = 61 getSystemService(KEYGUARD_SERVICE) as KeyguardManager 62 keyguardManager.requestDimissKeyguard(this, null) 63 } 64 Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> { 65 window.addFlags( 66 FLAG_TURN_SCREEN_ON or FLAG_SHOW_WHEN_LOCKED 67 ) 68 val keyguardManager = 69 getSystemService(KEYGUARD_SERVICE) as KeyguardManager 70 keyguardManager.requestDismissKeyguard(this, null) 71 } 72 else -> 73 window.addFlags( 74 FLAG_TURN_SCREEN_ON or 75 FLAG_SHOW_WHEN_LOCKED or FLAG_DISMISS_KEYGUARD 76 ) 77 } 78 79 val dialog = TimeAlertDialog() 80 dialog.show(supportFragmentManager, "alert_dialog") 81 } 82 83 setContentView(R.layout.activity_main) 84 85 setAlarm.setOnClickListener { 86 val date = "${dateText.text} ${timeText.text}".toDate() 87 when { 88 date != null -> { 89 val calendar = Calendar.getInstance() 90 calendar.time = date 91 setAlarmManager(calendar) 92 Toast.makeText( 93 this, "アラームをセットしました", 94 Toast.LENGTH_SHORT 95 ).show() 96 } 97 else -> { 98 Toast.makeText( 99 this, "日付の形式が正しくありません", 100 Toast.LENGTH_SHORT 101 ).show() 102 } 103 } 104 105 cancelAlarm.setOnClickListener { 106 cancelAlarmManager() 107 } 108 109 dateText.setOnClickListener { 110 val dialog = DatePickerFragment() 111 dialog.show(supportFragmentManager, "date_dialog") 112 } 113 114 timeText.setOnClickListener { 115 val dialog = TimePickerFragment() 116 dialog.show(supportFragmentManager, "time_dialog") 117 } 118 } 119 } 120 121 private fun setAlarmManager(calendar: Calendar) { 122 val am = getSystemService(Context.ALARM_SERVICE) as AlarmManager 123 val intent = Intent(this, AlarmBroadcastReceiver::class.java) 124 val pending = PendingIntent.getBroadcast(this, 0, intent, 0) 125 when { 126 Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP -> { 127 val info = AlarmManager.AlarmClockInfo( 128 calendar.timeInMillis, null 129 ) 130 am.setAlarmClock(info, pending) 131 } 132 Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> { 133 am.setExact( 134 AlarmManager.RTC_WAKEUP, 135 calendar.timeInMillis, pending 136 ) 137 } 138 else -> { 139 am.set( 140 AlarmManager.RTC_WAKEUP, 141 calendar.timeInMillis, pending 142 ) 143 } 144 } 145 } 146 147 private fun cancelAlarmManager() { 148 val am = getSystemService(Context.ALARM_SERVICE) as AlarmManager 149 val intent = Intent(this, AlarmBroadcastReceiver::class.java) 150 val pending = PendingIntent.getBroadcast(this, 0, intent, 0) 151 am.cancel(pending) 152 } 153 154 private fun String.toDate(pattern: String = "yyyy/MM/dd"): Date? { 155 return try { 156 SimpleDateFormat(pattern).parse(this) 157 } catch (e: IllegalArgumentException) { 158 return null 159 } catch (e: ParseException) { 160 return null 161 } 162 } 163} 164

試したこと

ネットで複数Unresolved referenceの解決方法について調べましたが解決できずでした。
初心者のため、深く理解できていない可能性は高いです。

補足情報(FW/ツールのバージョンなど)

Mac(macOS Mojave:10.14.4)
AndroidStudio3.4を利用しております。
他に必要な情報などあればお教えいただければ調べて記載いたします。

Yuki-Naka👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2019/05/11 00:01

こちらの質問が複数のユーザーから「過去の低評価」という指摘を受けました。

回答1

3

ベストアンサー

Unresolved referenceとは、コンパイラーが名前解決できないことを表しています。どこにも定義されていないメソッドや定数を用いたりしたときに発生します。

質問のコードでは、requestDimissKeyguardはrequestDismissKeyguardのタイプミス(10文字目のsが抜けている)でしょう。

KeyguardManager#requestDismissKeyguardのリファレンス

他のものについては、コード中でそれぞれ

WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

のように改めるかするか、冒頭に

import android.view.WindowManager.LayoutParams.*

のようにimport文を記述したら改善されるのではないでしょうか。
(18:04回答訂正)

WindowManager.LayoutParamsのリファレンス

当該書籍を所有していないのでコードがどのように掲載されているのかわかりませんが、誤植か、import static文が省略されていて読者に暗黙の了解を求めているのか、いずれかではないかと思います。

投稿2019/05/11 01:36

編集2019/05/11 09:06
keicha_hrs

総合スコア6758

Yuki-Naka, kenta0228👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

kenta0228

2019/05/11 03:21

質問のコードでは、requestDimissKeyguardはrequestDismissKeyguardのタイプミス(10文字目のsが抜けている)でしょう。 →ありがとうございます。何度も見直したつもりだったのですが、間違えておりました。 それ以外の項目については試しながら解決できるよう頑張ってみます
keicha_hrs

2019/05/11 03:34

Unresolved reference: format はimportが間違っていませんか。java.text.DateFormat.format()に引数2つのものはありません。 Unresolved reference: OnDateSelectedListener はこのinterfaceを記述している別ソース側にスペルミスがありませんか。 他も何かしら軽微な誤りだと思います。
keicha_hrs

2019/05/11 09:11 編集

参考までに、メニューからFile-> Settings->Editor->General->Auto Importとたどると、Add unambiguous imports on the flyという項目があります。これにチェックを入れておくと、import文が自動的に挿入されるので便利です。また、CtrlとAltを押しながらOキーを押すことで、不足しているimport文を挿入してくれる機能もあります。ただし、DateFormatのように候補が複数あるものは自動挿入できないので、そこはユーザーが選択操作をする必要があります。 こうした開発環境の便利機能を活用することも大切です。
kenta0228

2019/05/18 03:12

返信が遅くなり申し訳ありませんでした。 アドバイスいただきありがとうございます。 大変勉強になります。参考させていただき進めていきたいと思います。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

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