私の Android アプリには、テキストを入力できる EditText があります。私がやりたいのは、すべての文字を別の文字に変更することです (ある種の暗号化)。したがって、最初にすべての文字を読む必要があります。
どうやってやるの?
更新: 編集テキスト内のテキストは、ボタンのクリック時にエンコードされます。
私の Android アプリには、テキストを入力できる EditText があります。私がやりたいのは、すべての文字を別の文字に変更することです (ある種の暗号化)。したがって、最初にすべての文字を読む必要があります。
どうやってやるの?
更新: 編集テキスト内のテキストは、ボタンのクリック時にエンコードされます。
文字列全体を読み取り、その各文字を処理し、結果を文字列に入れ、ターゲットの editText または TextView に格納します。
これをライブで行いたい場合は、有効なキーのキーイベントをキャッチし、edittext から文字列全体を取得し、最後の文字を必要なものに置き換えて、結果をターゲット ビューに保存します。
String str = edittext.getText().toString();
for(int i=0;i<str.length;i++)
{
String singlechar=charAt(i);
// here you can change char by another chare here
}
InputFilter を使用できます。
以下のスニペットを入力すると、各文字が $ に置き換えられます。
次のスニペットが役立ちます。
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
return "$";
}
return null;
}
};
EditText editText = (EditText) findViewById(R.id.rg);
editText.setFilters(new InputFilter[] {filter});
以下は私の作業スニペットです
package org.vipul;
import android.app.Activity;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.Spanned;
import android.widget.EditText;
public class AbcActivity extends Activity {
EditText editText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) findViewById(R.id.rg);
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
return "$";
}
return null;
}
};
editText.setFilters(new InputFilter[] {
filter
});
}
}