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

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

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

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

Java

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

button

HTMLで用いる<button>タグです。

Android Studio

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

Q&A

解決済

1回答

1351閲覧

Android Studio初心者です。アプリケーションをDL後にEditTextの内容を変更して値をそのまま保持したいですl

takusuke

総合スコア16

XML

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

Java

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

button

HTMLで用いる<button>タグです。

Android Studio

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

0グッド

1クリップ

投稿2019/05/09 10:45

前提・実現したいこと

題の通り、Android Studio でアプリケーションをDL後にEditTextの内容を変更して値をそのまま保持できるプログラムを実装したいと考えています。

ここに質問の内容を詳しく書いてください。

Android studio で上記の内容を実装したいと考えているのですが、検索してもなかなか進みません。EditText.addTextChangedListenerを使用すれば良いのかなと調べた結果思いましたが、なかなかうまくいきません。具体的には、編集ボタンをクリックすると文字を入力することができ、その文字を登録し、画面遷移をした時も値をリビルドするまで(リビルドしても値が変わらなくても良い)保持できるようにしたいのです。例えばCH1という文字列をCH31に変更するとリビルドするまで(リビルドしても値が変わらなくても良い)CH31が保持されるというプログラムです。

該当のソースコード

package com.example.tokoroshingo.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.text.SpannableStringBuilder;

public class SubActivity13 extends AppCompatActivity {

private EditText text1, text2, text3; private Button changeButton1, changeButton2, changeButton3; public SubActivity13() { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub13); text1 = findViewById(R.id.text1); text1.setText("CH1", TextView.BufferType.EDITABLE); //text1.addTextChangedListener((TextWatcher) this); text1.setEnabled(false); text2 = findViewById(R.id.text2); text2.setText("温度", TextView.BufferType.EDITABLE); text2.setEnabled(false); text3 = findViewById(R.id.text3); text3.setText("℃", TextView.BufferType.EDITABLE); text3.setEnabled(false); changeButton1 = findViewById(R.id.button1); changeButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton1.getText() == "変更") { text1.setEnabled(true); changeButton1.setText("完了"); } else{ SpannableStringBuilder sb = (SpannableStringBuilder)text1.getText(); String str = sb.toString(); text1.setText(str, TextView.BufferType.EDITABLE); changeButton1.setText("変更"); text1.setEnabled(false); } } }); changeButton2 = findViewById(R.id.button2); changeButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton2.getText() == "変更") { text2.setEnabled(true); changeButton2.setText("完了"); } else{ changeButton2.setText("変更"); text2.setEnabled(false); } } }); changeButton3 = findViewById(R.id.button3); changeButton3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton3.getText() == "変更") { text3.setEnabled(true); changeButton3.setText("完了"); } else{ changeButton3.setText("変更"); text3.setEnabled(false); } } }); Button returnButton5 = findViewById(R.id.return_button); returnButton5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplication(), com.example.tokoroshingo.myapplication.SubActivity3.class); startActivity(intent); } }); }

}

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/05/09 23:45

stringの比較方法とかapidocにかいてるのになー(笑)
takusuke

2019/05/11 05:41

すみません、初心者でよく分からなくて汗
guest

回答1

0

ベストアンサー

https://qiita.com/YAmi/items/3e5640f365277d70f255

Shared Preference で保存できます。

また、文字列の比較が間違っていて意図しない結果になると思います。

x if(changeButton3.getText() == "変更") { O if(changeButton3.getText().equals("変更")) {

投稿2019/05/10 02:14

kamikaze.cappa

総合スコア558

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

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

takusuke

2019/05/11 03:49

ありがとうございます!試してみます。 文字列の比較で少しおかしくなっていました!! 助かりました泣
takusuke

2019/05/11 05:39

以下のように変更してみましたが、リビルドした際に値が消えてしまいます(端末内にxmlとして文字列は保存されている)。 恒常的にeditText(今の場合text1)にinputから参照した文字列を表示させるにはどうすれば良いのでしょうか。 changeButton1 = findViewById(R.id.button1); changeButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton1.getText().equals("変更")) { text1.setEnabled(true); changeButton1.setText("完了"); } else{ //編集文字列を取得 SpannableStringBuilder sb = (SpannableStringBuilder)text1.getText(); String str = sb.toString(); //編集文字列を保存 prefs = getSharedPreferences(str,MODE_PRIVATE); Editor editor = prefs.edit(); //編集文字列のxmlファイル書き出し editor.putString("input", str); editor.apply(); //読み出し text1.setText(prefs.getString("input", "CH1"),TextView.BufferType.EDITABLE); changeButton1.setText("変更"); text1.setEnabled(false); } } });
takusuke

2019/05/11 05:42

全体のソースコードです package com.example.tokoroshingo.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.text.SpannableStringBuilder; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; public class SubActivity13 extends AppCompatActivity { private EditText text1; private EditText text2; private EditText text3; private Button changeButton1, changeButton2, changeButton3; private SharedPreferences prefs; public SubActivity13() { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub13); text1 = findViewById(R.id.text1); text1.setEnabled(false); text2 = findViewById(R.id.text2); text2.setText("温度", TextView.BufferType.EDITABLE); text2.setEnabled(false); text3 = findViewById(R.id.text3); text3.setText("℃", TextView.BufferType.EDITABLE); text3.setEnabled(false); changeButton1 = findViewById(R.id.button1); changeButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton1.getText().equals("変更")) { text1.setEnabled(true); changeButton1.setText("完了"); } else{ //編集文字列を取得 SpannableStringBuilder sb = (SpannableStringBuilder)text1.getText(); String str = sb.toString(); //編集文字列を保存 prefs = getSharedPreferences(str,MODE_PRIVATE); Editor editor = prefs.edit(); //編集文字列のxmlファイル書き出し editor.putString("input", str); editor.apply(); //読み出し text1.setText(prefs.getString("input", "CH1"),TextView.BufferType.EDITABLE); changeButton1.setText("変更"); text1.setEnabled(false); } } }); //text1.setText(prefs.getString("input", null),TextView.BufferType.EDITABLE); changeButton2 = findViewById(R.id.button2); changeButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton2.getText().equals("変更")) { text2.setEnabled(true); changeButton2.setText("完了"); } else{ changeButton2.setText("変更"); text2.setEnabled(false); } } }); changeButton3 = findViewById(R.id.button3); changeButton3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(changeButton3.getText().equals("変更")) { text3.setEnabled(true); changeButton3.setText("完了"); } else{ changeButton3.setText("変更"); text3.setEnabled(false); } } }); Button returnButton5 = findViewById(R.id.return_button); returnButton5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplication(), com.example.tokoroshingo.myapplication.SubActivity3.class); startActivity(intent); } }); } }
kamikaze.cappa

2019/05/11 07:01

ぱっと見、保存はできてると思うますが、読み込みが抜けています。 onCreate あたりの タイムイングで、SharedPreference から getString する必要があります。
takusuke

2019/05/11 18:44

ありがとうございます!!出来ました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問