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

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

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

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

Kotlin

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

Q&A

解決済

1回答

2281閲覧

spinnerで選択されたものを代入できない。

monomo123

総合スコア8

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2020/05/09 12:15

Android Studioでspinnerで選択されたものを、MainActivity.ktからthinkActivity.ktに移すためにintent.putExtraを使おうと考えたのですが、selectedItemをspinnerResultに代入する際にエラーが出てしまい、代入することができません。
初歩的なミスなのかもしれませんが、解決策が分かった方がいましたら、教えていただけますでしょうか。
宜しくお願いします。

エラー内容
Unresolved reference:selectedItem

kotlin

1package com.example.myporker 2 3import android.content.Intent 4import android.os.Bundle 5import android.view.View 6import android.widget.AdapterView 7import android.widget.Spinner 8import androidx.appcompat.app.AppCompatActivity 9 10import kotlinx.android.synthetic.main.activity_main.* 11 12class MainActivity : AppCompatActivity() { 13 14 15 override fun onCreate(savedInstanceState: Bundle?) { 16 super.onCreate(savedInstanceState) 17 setContentView(R.layout.activity_main) 18 19 spinner.onItemSelectedListener= 20 object : AdapterView.OnItemSelectedListener { 21 override fun onNothingSelected(parent: AdapterView<*>?) { 22 fun onNothingSelected(parent: AdapterView<*>?){ 23 } 24 } 25 26 override fun onItemSelected( 27 parent: AdapterView<*>?, 28 view: View?, 29 position: Int, 30 id: Long 31 ) { 32 val spinner = parent as? Spinner 33 val item = spinner?.selectedItem as? String 34 val selectedItem = item 35 } 36 } 37 38 drow.setOnClickListener{ 39 val intent = Intent(this,thinkActivity::class.java) 40 val spinnerResult = selectedItem 41 intent.putExtra("floor",spinnerResult) 42 startActivity(intent) 43 } 44 } 45}

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

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

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

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

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

guest

回答1

0

ベストアンサー

selectedItem が onItemSelected メソッドの中で宣言されているため、ローカル変数と言って、このメソッドの中でしか使えない変数になっているので、他のメソッド (drow.setOnClickListener) で使うことができません。

MainActivity の複数のメソッドからアクセスできるように、selectedItem をプロパティにしましょう。
参考: [Kotlin]クラスの定義方法とプロパティ/コンストラクタの設定 | Output 0.1

diff

1 class MainActivity : AppCompatActivity() { 2 3+ private var selectedItem: String? = null 4 5 override fun onCreate(savedInstanceState: Bundle?) { 6 7 // 略 8 9 override fun onItemSelected( 10 parent: AdapterView<*>?, 11 view: View?, 12 position: Int, 13 id: Long 14 ) { 15 val spinner = parent as? Spinner 16 val item = spinner?.selectedItem as? String 17- val selectedItem = item 18+ selectedItem = item 19 }

投稿2020/05/09 17:40

hoshi-takanori

総合スコア7895

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

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

monomo123

2020/05/10 04:31

他のメソッドで使うためにこのようなやり方があることを知りませんでした。勉強になりました。 親切に、教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問