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

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

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

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

Android Studio

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

Q&A

解決済

1回答

737閲覧

anroid studioでSharedPreferencesを使用してSpinnerの値を保存し、いくつか遷移した先のアクティビティでその値を取り出して計算に使いたい

souja

総合スコア13

Java

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

Android Studio

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

0グッド

0クリップ

投稿2019/11/18 07:11

編集2019/11/19 02:59

下のコードのようにSharedPreferencesを使ってSpinnerの値をxmlファイル(data1という名前)として保存することはできました。ですがその値をいくつか遷移した先のアクティビティで取り出して計算に使用する方法がわかりません。どなたか教えていただきたいです。
以下はdata1の保存データです。

<map> <int name="age" value="42" /> </map>

計算式としてはx=220-age(data1に保存した値)みたいにしたいと考えています。

保存する時のコードと呼び出すときのコードを書いておきます。
デバックしたところ、selectItemが0になっていました。
保存

java

1 writebutton.setOnClickListener(new View.OnClickListener(){ 2 public void onClick(View view){ 3 //プリファレンスへの書き込み// 4 SharedPreferences.Editor editor = sharedPreferences.edit(); 5 editor.putInt("age", Integer.parseInt(spinner.getSelectedItem().toString())); 6 editor.apply(); 7 } 8 }); 9

呼び出し

java

1 SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE); 2 int selectItem = preferences.getInt("age", 0); 3

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/11/18 11:05

書き込んだときと同じキーで受け取ればいいだけの話ですが、何がわからないのかこの文からは読み取れません。
jimbe

2019/11/18 11:33

SharedPreferences のメソッドを使って保存・取得をする限り, 保存の方法である xml ファイルのことは考える必要は無いと思います.
souja

2019/11/19 02:33

わかりづらくて申し訳ありません。読み込むときのコードがわかりませんでした。本やネットで調べると様々なものがあってどれが適切なのかわからなかったので、、、
souja

2019/11/19 02:55

質問を修正します
souja

2019/11/19 03:48

selectItemが0になってしまいます。これは何もはいっていないということでしょうか?
guest

回答1

0

ベストアンサー

以下でkamikaze.cappa様が回答されているのですが。。。

android studioのアプリでSpinnerで入力値を保存して、遷移先ではなくそれよりもさらに先のactivityで入力値を読み取れるのか?

java

1 SharedPreferences pref = getPreferences(Context.MODE_PRIVATE); 2 Spinner sp = findViewById(R.id.spinner); 3 4 // load 5 int selectItem = pref.getInt("ID" , 0); 6 sp.setSelection(selectItem);

spinnerにセットする必要がないのであれば、以下かと。

java

1 SharedPreferences pref = getPreferences(Context.MODE_PRIVATE); 2 3 // load 4 int selectItem = pref.getInt("ID" , 0);

selectItemが取得した値になります。
従って「x = 220 - selectItem」かと。。

投稿2019/11/18 13:52

jun74

総合スコア338

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

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

souja

2019/11/19 02:55

ためしてみたのですが、selectItemが0になります。これはnullということでしょうか?質問を加筆修正しておきます。
jun74

2019/11/19 02:59

SharedPreferencesを使って保存したものを読み込んでいますか? IDという名前で書いたらIDという名前で読み込むのですが。
souja

2019/11/19 03:27

自分はageというキーを指定しているのでそれを使用してjun74さんが上に書いていただいたものを使用しているのですが、0になってしまいます。
souja

2019/11/19 04:10

ご回答ありがとうございます!ためしてみます!
souja

2019/11/19 04:20

試してみたところ、Create method 'getDefaultSharedPreferences' とでるのですが、メソッドを作る必要があるのでしょうか?
jun74

2019/11/19 04:29

以下で定義すれば、そんなことにはならないと思うのですが。。 SharedPreferences sharedPreferences; SharedPreferences.Editor editor; sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); editor = sharedPreferences.edit();
souja

2019/11/19 05:19

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); editor = sharedPreferences.edit(); //書き込みボタンが押されたときの処理// writebutton.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ //プリファレンスへの書き込み// editor.putInt("age", Integer.parseInt(spinner.getSelectedItem().toString())); editor.apply(); } }); 書き込みはこのようにかいて問題ありませんでした。ありがとうございます。 SharedPreferences sharedPreferences = (SharedPreferences)PreferenceManager.getDefaultSharedPreferences(this); selectItem = sharedPreferences.getInt("age",0); 読み込みはこうするとエラーがでてしまいます。 エラー: 不適合な型: <anonymous OnClickListener>をContextに変換できません 計算するときにボタンを押したら数字を読み込んで計算するという動作にしています。
souja

2019/11/19 05:20

ご指摘いただいたものは書き込みのときの定義でいいんでしょうか?
souja

2019/11/19 05:21

どうも呼びこみがうまくいきません、、、
jun74

2019/11/19 05:43 編集

書き込みと同じようにselectItem = sharedPreferences.getInt("age",0); 以外はsetOnClickListenerの外に書けば大丈夫かと。。
souja

2019/11/19 05:52

たびたびすいません。ありがとうございます。ためしてみます!
souja

2019/11/19 05:56

なんどもおつきあいいただいて本当にありがとうございました!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問