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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Kotlin

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

解決済

Kotlinでプルダウン(spinner)で選択した項目のデータを遷移後の画面で表示させる方法について

tenjin
tenjin

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Kotlin

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

1回答

0評価

0クリップ

68閲覧

投稿2020/02/12 10:30

編集2022/01/12 10:58

前提・実現したいこと

Kotlinでプルダウン(spinner)で選択した項目のデータを遷移後の画面で表示させようとしています。

[Android & Kotlin] プルダウンで項目選択できるSpinnerを設定という記事と「アプリの画面遷移とActivity間のデータ転送」のプログラムを組み合わせ用としています。

具体的には、private val spinnerItems = arrayOf("Spinner", "Android", "Apple", "Windows")のプルダウンの中からユーザによって選ばれた項目を、ボタン遷移後のページで表示させたいです。

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

ビルドでエラーは出ず、エミュレータで実行できるのですが、Mainページでフォーム(EditText)に入力し、プルダウン(spinner)を選択して、ボタンを押すと、Subページに移動せずにアプリが終了してAndroidのホーム画面が表示されてしまう問題が解決できません。

ご回答を受けての修正とエラー

ご回答を受けて修正しましたが、subActivity.lt

textView.text = message //textView.text = spinner_result
Unresolved reference: textView

とエラーが出るようになってしまいました。

エミュレータで「Enter」ボタンを押すと画面遷移はしますが、フォームとプルダウンの内容は移行画面で表示されていない状態です。

MainActivity.kt

kotlin

package com.example.diceroller import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.app.Activity import android.content.Intent import android.util.Log import android.view.View import android.widget.AdapterView import android.widget.Spinner import android.widget.ArrayAdapter import kotlinx.android.synthetic.main.activity_main.* import android.widget.AdapterView.OnItemSelectedListener class MainActivity : AppCompatActivity() { companion object { const val EXTRA_MESSAGE = "com.example.kotlinactivitydatatrans.MESSAGE" const val EXTRA_SPINNER_RESULT = "com.example.kotlinactivitydatatrans.SPINNER_RESULT" } //フォームからのデータ private val RESULT_SUBACTIVITY = 1000 // スピナーの選択肢 private val spinnerItems = arrayOf("Spinner", "Android", "Apple", "Windows") var setectedItem: String ="Spinner" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val spinner = findViewById<Spinner>(R.id.spinner) // ArrayAdapter val adapter = ArrayAdapter(applicationContext, android.R.layout.simple_spinner_item, spinnerItems) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // spinner に adapter をセット // Kotlin Android Extensions spinner.adapter = adapter // リスナーを登録 spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{ // アイテムが選択された時 override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { val spinnerParent = parent as Spinner val item = spinnerParent.selectedItem as String // Kotlin Android Extensions setectedItem = item } // アイテムが選択されなかった override fun onNothingSelected(parent: AdapterView<*>?) { // } } //ボタンが押されたらデータをsubページに移動する button.setOnClickListener { if (editText.text != null) { val intent = Intent(applicationContext, SubActivity::class.java) val str = editText.text.toString() val spinner_result = setectedItem Log.d("debug",str) intent.putExtra(EXTRA_MESSAGE, str) intent.putExtra(EXTRA_SPINNER_RESULT, spinner_result) startActivityForResult(intent, RESULT_SUBACTIVITY) editText.setText("") } } } }

SubActivity.kt

kotlin

package com.example.diceroller import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.app.Activity import android.content.Intent import kotlinx.android.synthetic.main.activity_main.* class SubActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sub) // to get message from MainActivity val intent = getIntent() val message = intent.extras?.getString(MainActivity.EXTRA_MESSAGE)?:"" val spinner_result = intent.extras?.getString(MainActivity.EXTRA_SPINNER_RESULT)?:"" textView.text = message //textView.text = spinner_result //移動前のページに遷移後の画面から入力された文字列を返す button.setOnClickListener{ val intentSub = Intent() if (editText.text != null) { val str = message + editText.text.toString() intentSub.putExtra(MainActivity.EXTRA_MESSAGE, str) editText.setText("") } setResult(Activity.RESULT_OK, intentSub) finish() } } }

activity_sub.xml

xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#fde" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:text="@string/sub" android:textSize="24sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_marginTop="40dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/from_main" android:textSize="24sp" /> <TextView android:id="@+id/textView" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_margin="20dp" android:textSize="24sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/os_name" android:textSize="24sp" /> <TextView android:id="@+id/spinner" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_margin="20dp" android:textSize="24sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/to_main" android:textSize="24sp" /> <EditText android:id="@+id/editText" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_margin="20dp" android:background="#fff" android:hint="@string/hint2" android:textSize="24sp" /> </LinearLayout> <Button android:id="@+id/button" android:text="@string/back" android:textSize="24sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="20dp" /> </LinearLayout>

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

Android Studio 3.5.3

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

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

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

hoshi-takanori
hoshi-takanori

2020/02/12 21:56

ボタンが押されたときに editText から取得した値を intent に putExtra してますが、同様に spinner の値も取得して intent に putExtra すればいいと思います。
tenjin
tenjin

2020/02/13 08:46

editText から取得した値を intent に putExtra ということですが、具体的にどこの箇所か指定いただけると助かります。 activity_main.xmlの以下の箇所だということはわかっています。 ``` <EditText android:id="@+id/editText" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_margin="20dp" android:background="#fff" android:hint="@string/hint1" android:textSize="24sp" /> ```
hoshi-takanori
hoshi-takanori

2020/02/13 08:54

「editText から取得した値」に関してはすでに intent に putExtra してらっしゃいますよ。 「spinner の値」も同様に処理してみては、という提案です。ちなみに xml ではありません。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Kotlin

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