文字が EditText に入力されて 0 から 1 文字の長さになり、何らかのアクションを実行するかどうかを検出するにはどうすればよいですか?
25350 次
3 に答える
25
あなたはかなり抽象的な質問をしているので、同様に一般的な答えを試してみましょう:
あなたの中で、あなたonCreate()
を宣言してキャストしますEditText
EditText editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(filterTextWatcher);
そして、 の外で、次のようonCreate()
にセットアップします。filterTextWatcher
private TextWatcher filterTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// DO THE CALCULATIONS HERE AND SHOW THE RESULT AS PER YOUR CALCULATIONS
int radius = 0;
radius = Integer.valueof(s.toString);
double area = Math.PI * radius * radius;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
編集:
可能な計算でコードを更新しました。(テストされていないコード: テストせずに入力しただけです。必要に応じて変更してください)
TextWatcher の詳細については、こちらをご覧ください
そして、ここにあなたが始めるためのいくつかの例があります:
- http://www.android-ever.com/2012/06/android-edittext-textwatcher-example.html
- http://www.cybernetikz.com/blog/android-textwatcher-example/
- http://www.allappsdevelopers.com/TopicDetail.aspx?TopicID=22b00052-dad0-4e09-a07e-b74f115ab247
- http://myandroidsolutions.blogspot.in/2012/06/android-edittext-change-listener.html
于 2013-01-31T12:13:57.627 に答える
7
EditTextで TextWatcherを使用して、ユーザーの入力データでやりたいことをすぐに処理できます。
これは、ユーザーがデータを入力したときにすぐにフォーマットする例です
final EditText EditTxtFinancialCode = (EditText) findViewById(R.id.edtNewCpFinancialCode);
EditTxtFinancialCode.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String a = "";
boolean flag = true;
String eachBlock[] = EditTxtFinancialCode.getText().toString().split("-");
for (int i = 0; i < eachBlock.length; i++) {
if (eachBlock[i].length() > 4) {
flag = false;
}
}
if (flag) {
EditTxtFinancialCode.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL)
KeyDel = 1;
return false;
}
});
if (KeyDel == 0) {
if (((EditTxtFinancialCode.getText().length() + 1) % 5) == 0) {
if (EditTxtFinancialCode.getText().toString().split("-").length <= 2) {
EditTxtFinancialCode.setText(EditTxtFinancialCode.getText() + "-");
EditTxtFinancialCode.setSelection(EditTxtFinancialCode.getText().length());
}
}
a = EditTxtFinancialCode.getText().toString();
} else {
a = EditTxtFinancialCode.getText().toString();
KeyDel = 0;
}
} else {
EditTxtFinancialCode.setText(a);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
于 2013-01-31T12:09:00.710 に答える
6
http://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html
リスナーを作ります。
myTextBox.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
TextView myOutputBox = (TextView) findViewById(R.id.myOutputBox);
myOutputBox.setText(s);
}
});
http://www.mysamplecode.com/2012/06/android-edittext-text-change-listener.htmlを参照してください
于 2013-01-31T12:14:37.640 に答える