前提・実現したいこと
ビーコンの情報を拾うシンプルなアプリを作っています。
アプリのイメージとしては、
①アプリ起動 ⇒ ②リストボックスから選択(1から25の値) ⇒ ③ビーコン電波受信開始
という流れにしたいと考えています。
今までは①からすぐ③の処理でアプリとして使用できていたのですが、
③受信前に選択肢から選ばせてから受信するように②を追加したところ、
起動しただけで落ちるようになってしまいました。
ちなみに②は選択するだけで、以降の処理の判断などに使っていません。
ログ等で選択値を出力したいだけです。
(当方、まだAndroidアプリ開発の初心者なので、とんちんかんな書き方をしているかもしれません…)
発生している問題・エラーメッセージ
「問題が発生したため、ビーコン受信を終了します。」
というメッセージが返る
ログを見ると、
Caused by: kotlin.KotlinNullPointerException
at com.example.*****.myapplication.MainActivity.onResume(MainActivity.kt:104)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6327)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
とあったので、
104行目を見ましたが、スキルが浅くてピンと来ません。
該当のソースコード
kotolin
1```ここに言語を入力 2class MainActivity : AppCompatActivity() ,BeaconConsumer { 3 4 // BeaconManager型変数の宣言 5 private var beaconManager: BeaconManager? = null 6 7 // uuidの指定 8 private val uuidString = "FDA50693-A4E2-4FB1-AFCF-C6EB07647825" 9 private val uuid = Identifier.parse(uuidString) 10 11 // ビーコンのフォーマット設定 12 private val IBEACON_FORMAT: String = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24" 13 14 // Handlerクラスの変数の宣言 15 private val handler: Handler = Handler() 16 17 //ここから追加: 選択肢 18 private val spinnerItems = arrayOf("1", "2", "3", "4" , "5" ,"6" , "7" , "8", "9" , "10" , 19 "11" , "12" , "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22","23","24","25") 20 //一旦、ここまで追加 21 22 /************************************************** 23 * AppCompatActivity内のメソッドをoverride 24 **************************************************/ 25 // onCreate 26 override fun onCreate(savedInstanceState: Bundle?) { 27 super.onCreate(savedInstanceState) 28 setContentView(R.layout.activity_main) 29 30 31//ここから追加 32 val spinner = findViewById<Spinner>(R.id.spinner) 33 34 // ArrayAdapter 35 val adapter = ArrayAdapter(applicationContext, 36 android.R.layout.simple_spinner_item, spinnerItems) 37 38 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) 39 40 // spinner に adapter をセット 41 spinner.adapter = adapter 42 43 // リスナーを登録 44 spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { 45 // アイテムが選択された時 46 override fun onItemSelected( 47 parent: AdapterView<*>?, 48 view: View?, position: Int, id: Long 49 ) { 50 val spinnerParent = parent as Spinner 51 val item = spinnerParent.selectedItem as String 52 // Kotlin Android Extensions 53 // textView.text = item 54 Log.d("posit:", "$item") 55 56//一旦、ここまで追加 57 58 // デバイスのBLE対応チェック 59 if (!packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { 60 61 // 未対応の場合、Toast表示 62 showToast("このデバイスはBLE未対応です", Toast.LENGTH_LONG) 63 } 64 65 // API 23以上かのチェック 66 if (Build.VERSION.SDK_INT >= 23) { 67 68 // パーミッションの要求 69 checkPermission() 70 } 71 // ビーコンマネージャのインスタンスを生成 72 beaconManager = BeaconManager.getInstanceForApplication(applicationContext) 73 74 // BeaconManagerの設定 75 beaconManager!!.beaconParsers.add(BeaconParser().setBeaconLayout(IBEACON_FORMAT)) 76 } 77//再度、ここから追加 78 // アイテムが選択されなかった 79 override fun onNothingSelected(parent: AdapterView<*>?) { 80 // 81 } 82//ここまで追加 83 84 } 85 } 86 87 // onResume 88 override fun onResume() { 89 super.onResume() 90 91 // ビーコンサービスの開始 92 beaconManager!!.bind(this) 93 } 94 95 // onPause 96 override fun onPause() { 97 super.onPause() 98 99 // ビーコンサービスの停止 100 beaconManager!!.unbind(this) 101 } 102 103 override fun onBackPressed() { 104 // バックキーの無効化 105 moveTaskToBack (true) 106 } 107 108 109 /************************************************** 110 * BeaconConsumer内のメソッドをoverride 111 **************************************************/ 112 // onBeaconServiceConnect 113 override fun onBeaconServiceConnect() { 114 115・・・以降、さらに続くので割愛
試したこと
追加した位置が悪いのでしょうか?
ただ②を追加したかっただけなのですが・・・。
Layoutのほうにも、
<Spinner android:layout_width="103dp" android:layout_height="22dp" android:id="@+id/spinner" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="34dp" app:layout_constraintTop_toTopOf="parent" android:entries="@id/spinner"/>
を追加しています。
補足情報(FW/ツールのバージョンなど)
Android Studio V3.2.1
Kotlin 1.2.71
回答1件
あなたの回答
tips
プレビュー