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

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

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

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

Android Studio

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

Q&A

1回答

1176閲覧

textedit1を入力しないとedittext2を入力できないようにしたいです。

applemango

総合スコア7

Java

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

Android Studio

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

0グッド

0クリップ

投稿2017/02/20 15:43

###前提・実現したいこと
前提
最初にedittext1に文字数を入力してそのあとにedittext2に文字を入力します。すると動的にプログレスバーが変化し、textviewに○○文字まで残り何文字と表示されます。(ここまではできています)

###発生している問題・エラーメッセージ
先にedittext2から入力してしまうとアプリが落ちてしまいます。

###該当のソースコード
public class MainActivity extends Activity AppCompatActivity{
EditText et, et2;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.editText);
et2 = (EditText) findViewById(R.id.editText2);
tv = (TextView) findViewById(R.id.textView);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String text2 = et2.getText().toString();
int b = Integer.valueOf(text2);
if (tv != null) {
final int textColor;
int length = b - s.length();
if (length < 0) {
textColor = Color.RED;
} else {
textColor = Color.GRAY;
}
tv.setTextColor(textColor);
tv.setText("残り" + String.valueOf(length) + "文字");
ProgressBar progressBar1 = (ProgressBar) findViewById(R.id.progressBar2);
progressBar1.setMax(b); // 水平プログレスバーの最大値を設定
progressBar1.setProgress(b - length); // 水平プログレスバーの値を設定
}
else{}
}

@Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); } }

}

//保存などのボタンを作っていますがプログラムは省略してます。
###試したこと
textedit2をinvisibleにしておいて、edittextに文字が入力されたらvisibleにしようとしたんですが出来ませんでした。
とにかくアプリが落ちないようにしたいです。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

swordone

2017/02/20 16:48

このコードを読む限り、逆にedittext2が空のままedittext1に入力すると落ちそうなのですが…ログはどうなっていますでしょうか。掲載してください。
guest

回答1

0

文字数が1個以上になってからaddTextChangedListenerをして、0個になったらremoveTextChangedListenerをしたらいいと思いますよ。

また、idや変数名がぐちゃぐちゃです、揃えてから質問してください。

投稿2017/02/20 15:56

yona

総合スコア18155

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問