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

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

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

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

Kotlin

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

Q&A

解決済

1回答

1432閲覧

Andloid Studio 3.6.3 Spinner等の選択値の保存方法

kikiuran

総合スコア1

Java

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

Kotlin

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

0グッド

0クリップ

投稿2020/05/25 05:50

Android Studioを初めて使用する初心者です。
サンプルプログラムからSpinner, seekBar、RadioButton、RadioButtonをコードイングしてその値をheight.texに表示することを確認できましたが、アプリ再起動時に選択した値がheight.texには反映しますがSpinner, seekBar、RadioButtonそれぞれにも設定値が反映されるようにしたいです。
ネット上でいくつかの参考例がありましたが理解できずにいます。
下記のサンプルコードで再起動時に設定値ががSpinner, seekBar、RadioButtonに反映されるにはどのようなコーデイングが必要なのでしょうか方法を教えていただきたく宜しくお願い致します。

Andoroid Studio(kotlin対応)

-------------------------------------HeightActivity.xt
package com.example.mysize

import android.os.Bundle
import android.preference.PreferenceManager
import android.view.View
import android.widget.AdapterView
import android.widget.RadioButton
import android.widget.SeekBar
import android.widget.Spinner
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.edit
import kotlinx.android.synthetic.main.activity_height.*

class HeightActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_height)

//Spinner------
spinner5.onItemSelectedListener=
object : AdapterView.OnItemSelectedListener{
override
fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
val spinner5 = parent as? Spinner
val item = spinner5?.selectedItem as? String
item?.let {
if (it.isNotEmpty()) height.text = it
}
}

override fun onNothingSelected(parent: AdapterView<*>?) { } } val pref = PreferenceManager.getDefaultSharedPreferences(this) val heightVal = pref.getInt("HEIGHT", 160) height.text = heightVal.toString() seekBar.progress = heightVal

 //seekBar-------
seekBar.setOnSeekBarChangeListener(
object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(
seekBar: SeekBar?,
progress: Int,
fromUser: Boolean
) {
height.text = progress.toString()
}

override fun onStartTrackingTouch(seekBar: SeekBar?) { } override fun onStopTrackingTouch(seekBar: SeekBar?) { } })

//RadioButton------
radioGroup.setOnCheckedChangeListener { group, checkedId ->
height.text = findViewById<RadioButton>(checkedId).text
}
}

override fun onPause() { super.onPause() val pref = PreferenceManager.getDefaultSharedPreferences(this) pref.edit { //保存してる putInt("HEIGHT", height.text.toString().toInt()) } }

}

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

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

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

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

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

nakasho_dev

2020/05/25 16:58

質問するときのヒント( https://teratail.com/help/question-tips ) を良く読んで質問を編集しましょう。コードは整形するためのタグが用意されています。 また、Hieghtがなぜ保存されているかは理解されているのでしょうか。参考にされているサイトについてどのようなサイトを見てどこまで理解しているかを書いた方が、適切な回答が得られやすいと考えます。
kikiuran

2020/05/27 06:14

アドバイスをありがとうございます。 タグ等使えるようにガンバリます。
guest

回答1

0

ベストアンサー

何を保存すればいいかは設計の仕方次第なので、「この答え通りでなくてはならない」というものではありませんが、一つの例として考えるならば

  • Spinner→選択されている要素のポジション(0〜n)
  • SeekBar→設定されている値
  • RadioGroup→選択されているRadioButtonのID(RadioButtonにはXMLでradio1、radio2などのIDを与えておくものとする)

を保存しておけばいいのではないかと思います。

保存はこんな感じでしょうか。RadioButtonにはレイアウトXMLでそれぞれIDが与えられているものとします。

kotlin

1 pref.edit { 2 putInt("Spinner", spinner5.selectedItemPosition) 3 putInt("SeekBar", seekBar.progress) 4 putInt("Radio", radioGroup.checkedRadioButtonId) 5 } 6
  • Spinnerの復帰

(ただ、質問で示されたSpinnerのコードは要素何も設定していませんね?これはどうしたかったのだろう?)

kotlin

1 val spinnerDef = pref.getInt("Spinner", 0) 2 spinner5.setSelection(spinnerDef)
  • SeekBarの復帰

(SeekBarの最大値が100ではないのなら、最大値の設定を先に行いましょう)

kotlin

1 val seekBarDef = pref.getInt("SeekBar", 0) 2 seekBar.progress = seekBarDef
  • RadioButtonの復帰

kotlin

1 val radioDef = pref.getInt("Radio", R.id.radio1) 2 radioGroup.check(radioDef)

こんな感じでできるのでは。

投稿2020/05/26 09:40

keicha_hrs

総合スコア6768

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

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

kikiuran

2020/05/27 06:10

初心者の抽象的な質問に対して回答をありがとうござうました。 表示OKです。 質問1です。 >・Spinnerの復帰 >(ただ、質問で示されたSpinnerのコードは要素何も設定していません >ね?これはどうしたかったのだろう?) 要素の設定とは、設定するとすればどのようなコードが必要でしょうか。 質問2です。 下記のデータ保存時の各コードについてですが pref.edit { putInt("Spinner", spinner5.selectedItemPosition) putInt("SeekBar", seekBar.progress) putInt("Radio", radioGroup.checkedRadioButtonId) } "、"以降の各ビューの記述コードは探しても見つからなかったのですが何かjava、kotlinの決まりコードですか。また各復帰文についても同様でしょうか。
keicha_hrs

2020/05/27 09:26

質問の主題と異なることを再び質問したいときは、改めて質問を立てた方が良いと思います。 > 質問1 Spinnerを使った選択肢を設定するのに、質問でご提示された情報ではどのように行われたのかわからなかったので、そのような記述をしました。もしプログラムのコードで選択項目を設定するならば、次のようなページが参考になると思います。 https://akira-watson.com/android/spinner.html なお、参考のページはJavaで記述されていますが、Android StudioにはJavaのコードをKotlinのソースファイルにコピーペーストすればKotlinの文法に変換してくれる機能があるので、それを活用すれば移植は容易にできるでしょう。 > 質問2 これについてはちょっと意味がわからないです。Spinnerで言えばselectedItemPositionの部分のことですか?
kikiuran

2020/05/28 11:47

はい、putInt("Spinner", spinner5.selectedItemPosition)の spinner5.selectedItemPositionの部分です、何かビュー毎の決まり文なのでしょうか。 また、Spinnerの復帰での val spinnerDef = pref.getInt("Spinner", 0) spinner5.setSelection(spinnerDef)のspinner5.setSelection(spinnerDef)部分も同様でしょうか。
keicha_hrs

2020/05/28 13:00

Androidに限ったことではなく、こうしたGUIコンポーネントを扱うのに便利なメソッドがSDKによって提供されています。どんなメソッドが用意されているかはコンポーネントによって異なるので、仕様書を調べたりネットで調べたりして、自分が目的とするのに適したものを探すわけです。 基本はAndroid公式サイトを探します。 https://developer.android.com/reference/android/widget/Spinner ただ、ここから探すのは大変なので、参考になるページを探すわけです。例えばこんなサイト。 http://gacken.com/wp/program/android/997/ http://weide-dev.blogspot.com/2010/03/spinner.html RadioButtonやSeekBarについても同様です。
kikiuran

2020/05/28 23:49

基本メソッドあるのですね。 早々に利用します、ありがとうござうました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問