私は Android 開発の初心者です (クラスを受講しています)。
EditText ウィジェットの編集済みテキストを TextView ウィジェットに表示するには、TextWatcher を使用する必要があります。
たとえば、最初に入力されたものが編集された場合 (ユーザーが「Hoozledoofer」と入力してから「zledoof」を強調表示し、最後に「v」と入力した場合など)、最初に次の形式で変更を出力する必要があります。
'zledoof' => 'v'
これは、TextView の最初の行に表示されます。次に、2 行目には、EditText ウィジェットに現在存在する全文が表示されます。
Hoover
これを行う方法がわかりません。afterTextChanged メソッドで結果を出力する必要があることはわかっています。行ったことを保存し、入力した内容を出力し続けるにはどうすればよいですか? 何かアドバイス?
以下は、クラスで指定された TextWatcher の例です。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtEdit = (EditText) findViewById(R.id.editText1);
viewText = (TextView) findViewById(R.id.text);
txtEdit.addTextChangedListener (new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i("TC", "beforeTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("TC", "onTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}
public void afterTextChanged(Editable s) {
Log.i("TC", "afterTC " + s.toString());
}
});
}
これは、意図した最終結果を提供するために私が試したものですが、行われたすべての小さな編集を表示し続けます. これは問題にならない可能性があり、教授にとってはうまくいく可能性があります。
txtEdit.addTextChangedListener (new TextWatcher() {
String changed, newStr, edit;
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
changed = s.subSequence(start, start + count).toString();
//Log.i("TC", "beforeTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
newStr = s.toString();
edit = s.subSequence(start, start + count).toString();
//Log.i("TC", "onTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}
public void afterTextChanged(Editable s) {
viewText.setText(changed + " => " + edit + "\n" + newStr);
//Log.i("TC", "afterTC " + s.toString());
}
});