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

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

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

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Android Studio

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

Q&A

解決済

1回答

893閲覧

EditTextに入力した文字をアプリを閉じても同じように表示させたい

android_app_tw

総合スコア4

Java

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Android Studio

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

0グッド

0クリップ

投稿2020/08/26 06:51

編集2020/08/26 07:25

現在、Android Studioで、年齢と名前を入力するアプリを開発しています。
入力フォームに入力された年齢と名前を、アプリを閉じて、その後アプリを再起動させた際に、閉じる前に入力したテキストを表示させたままにしたいと考えています。
ボタンを押して、テキストを保存するところまでできたのですが、その後の処理の仕方がいまいちわかりません。
どのような形でも良いので、その後のプログラムを教えていただけると幸いです。
今できているプログラムは、こちらです。
MainActivity
package com.example.sample1;

import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editText = findViewById(R.id.edit_text); editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean flag) { if(!flag){ String str = editText.getText().toString().trim(); if(!str.matches("^[0-2]{2}[0-9]{2}[0-1]{1}[1-9]{1}[0-3]{1}[1-9]{1}$")){ Toast toast = Toast.makeText(MainActivity.this,"正しい入力値を入れてください",Toast.LENGTH_LONG); toast.show(); } } } }); Button saveButton = (Button)findViewById(R.id.SaveButton); saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { saveButtonClick(); } }); } private void saveButtonClick() { // 保存 EditText editText = (EditText)findViewById(R.id.edit_text); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); sp.edit().putString("SaveString", editText.getText().toString()).commit(); }

}

Activity_main
<TextView android:paddingTop="5dp" android:paddingLeft="5dp" android:id="@+id/text3" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/edit_text" android:text="年齢" />
<EditText android:id="@+id/edit_text2" android:layout_width="match_parent" android:layout_height="40dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/text3" android:inputType="number" android:background="@drawable/edittext_flame" android:hint="20" android:paddingLeft="5dp" />
<TextView android:paddingTop="5dp" android:paddingLeft="5dp" android:id="@+id/text4" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/edit_text2" android:text="氏名" />
<EditText android:id="@+id/edit_text3" android:layout_width="match_parent" android:layout_height="40dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/text4" android:inputType="text" android:background="@drawable/edittext_flame" android:hint="山田太郎" android:paddingLeft="5dp" />

何か解決方法があればぜひ教えていただきたいです。
また、追加するプログラムはできる限りすべて載せていただければ幸いです。

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

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

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

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

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

y_waiwai

2020/08/26 06:57

提示のコードの問題は何でしょうか。 また、なにをききたいのでしょうか。
keicha_hrs

2020/08/26 07:14

ボタンをクリックしたときにSharedPreferencesに保存する処理は実装されているようですが、アプリを再び起動したときにこの記憶したものを呼び出してEditText内に表示したいという質問なのでしょうか?
android_app_tw

2020/08/26 07:19

keicha_hrsさん、その通りです。 説明不足ですみません
guest

回答1

0

ベストアンサー

saveButtonClick()で保存したデータをアプリ起動時に読み出してEditTextに表示するならば、次のようにすればできるでしょう。

java

1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 7 String saveString = sp.getString("SaveString", ""); 8 9 final EditText editText = findViewById(R.id.edit_text); 10 editText.setText(saveString); 11

getString()の第1引数であるキー名は、putString()したときのものと一致させる必要があります。また、第2引数はアプリを初めて起動したときなどまだ保存データが存在しなかったときのデフォルト値です。

それから、保存の処理で

java

1 sp.edit().putString("SaveString", editText.getText().toString()).commit();

とされていますが、commit()ではなくapply()を利用することが推奨されています。

投稿2020/08/26 07:26

keicha_hrs

総合スコア6768

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

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

android_app_tw

2020/08/26 07:32

できました!!! 丁寧な説明ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問