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

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

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

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

Android Studio

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

Q&A

解決済

1回答

715閲覧

【java】【android studio】Preferenceの使い方について質問です。

bowwow

総合スコア4

Java

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

Android Studio

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

0グッド

0クリップ

投稿2021/07/04 14:41

Preferenceを使い、値を加算していくものをつくりたいです。

下記のような動きのものをつくりたいのです。
ネットで調べながらやっていたのですが、なかなかうまくいきません。
イメージ説明

コードはこのような感じです。
どなたかお願いします。
イメージ説明

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

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

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

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

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

dodox86

2021/07/04 23:03

うまく行かない、とは具体的にどうなってしまって、具体的にどうしたいのでしょうか。
bowwow

2021/07/05 10:00

フォームに数値を入力して、「確定」を押すと、「収支」というところに値が加算されていく動きを繰り返しできとうようにしたいのですが、 フォームに数値を入力して、「確定」を押すと、「収支」に「入力値+10」の値が表示されます。
jimbe

2021/07/05 14:23

> 「収支」に「入力値+10」 なぜそうなるのか、原因を想像し、その確認をされましたか。これがデバッグという作業になりますが、されたのであれば、想像と確認結果を追記して頂けますか。 例えば、どのような値を入力しても"必ず"「入力値+10」が表示されるでしょうか。 プログラムは、作者の思った通りでは無く、コードの通りに動きます。 「こう動くはず」との思いを一旦捨てて、コードを一行々々見直しては如何でしょうか。
guest

回答1

0

ベストアンサー

java

1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 Button button = findViewById(R.id.button); 7 TextView syuusi = findViewById(R.id.result); 8 EditText editText = findViewById(R.id.text1); 9 10 SharedPreferences preferences = getSharedPreferences("resultNumber",MODE_PRIVATE); 11 int x = preferences.getInt("sum",0); 12 syuusi.setText(String.valueOf(x));//保存内容を取得して表示する 13 14 button.setOnClickListener(new View.OnClickListener() { 15 @Override 16 public void onClick(View v) { 17 18 //EditTextに入力された文字を取得 19 String str1 = editText.getText().toString(); 20 //入力されたString型の文字をint型に変換 21 int num1 = Integer.parseInt(str1); 22 23 //int x = preferences.getInt("sum",0);//保存された数値を取得 24 int result = x + num1;//保存された値とついさっき入力された数値を足す 25 26 //editorは保存された値を編集するためのもの 27 SharedPreferences.Editor editor = preferences.edit(); 28 editor.putInt("sum",result);//さっき合計したものを保存 29 editor.apply();//アプリに反映させる 30 31 syuusi.setText(String.valueOf(result));//表示 32 33 } 34 }); 35 }

###あなたのコードの順序
保存内容を取得

EditTextの文字の内容を取得・変換

入力内容を保存

入力内容と保存内容を足す←保存した後に書いてるから足した数値を保存できていない

収支を表示

###私のコードの順序 保存内容を取得・表示 ↓ 入力内容を取得・変換 ↓ 保存内容を取得←onClick内に書くことで押されるたびに取得してくれる **なぜ押されるたびに取得しないといけないのか?** onClick内の場合 前回押されたときの数値+現在入力された数値 onClick外の場合 起動されたときに一回だけ実行されて取得した数値+現在入力した数値 なのでonClick外で起動時に一回だけ取得した数値は前回の保存内容が反映されず、ずっと同じ数値です ↓ 入力内容と保存内容を合計・保存 ↓ 収支を表示 このようにプログラムの順序を意識してみると何が問題だったのかわかりやすいと思います! あとこの状態だと確定を押したときにアプリが落ちてしまうため、try文の使い方なども調べてみるといいかもしれません

投稿2021/07/11 15:22

編集2021/07/12 11:57
ruikun

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問