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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

保存

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

Q&A

解決済

1回答

4748閲覧

Android studio EditTextに入力した文字を保存/読み出しする時にcheckboxのチェックとリンクさせたい。

rockey_7625

総合スコア25

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

保存

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

0グッド

0クリップ

投稿2020/08/13 08:08

Androidアプリを制作しているのですが、うまくいかないのでアドバイスください。
先日、関連した質問をさせて頂いたのですがその続きです。
チェックboxのチェックがされている時はEditTextに文字を入力できて尚且つその文字を保存したいのです。
逆にチェック無しの時はEditTextに文字は入力不可にしたいのです。
【アプリ起動時にチェックが有れば前回のEditTextの入力内容の読み出しを行い表示したい。】
中々複雑でコードを組んで見ましたがうまいこといきません。。。。
どう修正すればよいか難しく悩んでおります。
申し訳ありませんがアドバイス頂けないでしょうか?

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final boolean checked = prefs.getBoolean("chkbox01",false);
String schetext = prefs.getString("schetext", "");

final CheckBox chkbox01 = (CheckBox)findViewById(R.id.checkbox01); chkbox01.setChecked(checked); if (!checked){ chkbox01.setText("予定を入力する場合はチェックして下さい。"); }else { chkbox01.setText("予定:No.01が入力されています。"); TextView sche01 = findViewById(R.id.schedule01); sche01.setText("Schedule No.01"); EditText scheedit = findViewById(R.id.schedule_text01); scheedit.setText(schetext); } chkbox01.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final boolean checked = chkbox01.isChecked(); EditText scheedit = findViewById(R.id.schedule_text01); String schetext = scheedit.getText().toString(); //SharedPreferencesに書き込む SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("chkbox01", checked); editor.putString("schedule01", schetext); //editor.commit() editor.apply(); if(!checked) { chkbox01.setText("予定を入力する場合はチェックして下さい。"); TextView sche01 = findViewById(R.id.schedule01); sche01.setText(""); scheedit.setKeyListener(null); } else{ chkbox01.setText("予定:No.01が入力されています。"); TextView sche01 = findViewById(R.id.schedule01); sche01.setText("Schedule No.01"); } } });

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

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

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

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

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

dodox86

2020/08/13 08:36

コードはマークダウン記法を用いて読みやすくするようにしてください。インデントも崩れ、読みづらいとそれだけで回答は離れがちになります。 https://teratail.com/help/question-tips#questionTips3-5-1 https://teratail.com/questions/238564 あたりを参考にしてソースコードを適切に表示するようにしましょう。 それとどうでも良いのですが、悪いことをしている訳ではないので、「申し訳ありませんが」は不要だと思います。
rockey_7625

2020/08/14 03:00

返答ありがとうございます。 まだ、teratailを使い始めたばかりで使用方法を解っていない部分がありますのでご容赦ください。 マークダウン記法等よく読み今後参考にさせて頂きます。
guest

回答1

0

ベストアンサー

入力を禁止する、許可するという設定は、

java

1 scheedit.setEnabled(false); // 入力禁止 2 3 scheedit.setEnabled(true); // 入力許可

で良いと思います。検索するとsetKeyListener()を用いる方法とかいろいろ紹介されているようですが、そんなことはしなくていいんじゃないかなと思えます。(setKeyListener(null)で禁止した場合、入力を再び許可するときにKeyListenerをセットしなければならないし)

あと、気になったことですが、EditTextの内容を保存するPreferencesのキー名(第1引数)が、取得(getString())のときは"schetext"、保存(putString())のときは"schedule01"と異なっています。これでは取得のときに入力した内容を正しく読み出すことができないでしょう。どちらかに統一しましょう。

また、今のコードだとEditTextの内容を保存するのはチェックボックスを操作したタイミングになっています。ですから、何か入力したときはチェックボックスをオフにするまで保存が行われませんが、それは想定通りなのでしょうか?例えばEnterキーを入力したときに保存といった形がいいのではないかなと思えます。

投稿2020/08/13 13:24

keicha_hrs

総合スコア6768

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

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

rockey_7625

2020/08/14 03:25

アドバイスありがとうございます。 入力禁止に関しては色々調べたのですが、setKeyListener()を参考にしたのですが再度入力許可時にKeyListenerのSETが必要とは知りませんでした。 アドバイスの方法で修正しようと思います。【Preferencesのキー名も統一して修正します。】 EditTextの内容を保存については自分の想定通りに動いていません。。。 現状の方法はやめて入力後に保存ボタンを押して保存の方法にしようと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問