2012-07-05 55 views
1

我的Android应用程序中有一个EditText,您可以在其中输入一些文本。我想要做的是将每一个字符都改为另一个字符(某种加密)。因此,我首先必须阅读每一个字符。如何从Android的EditText中读取单个字符?

我该怎么做?

更新: 编辑文本中的文本将被编码在单击按钮上。

+0

你就不能读取整个字符串,并做了.ToCharArray()? – yhyrcanus 2012-07-05 14:26:57

+0

从编辑文本中获取字符串,并运行for循环从索引0到字符串长度,并在循环中使用charAt(index)方法。 – 2012-07-05 14:28:19

+0

[检查此链接(http://developer.android.com/reference/android/text/TextWatcher.html) – Venky 2012-07-05 14:28:32

回答

1

您可以使用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 
     }); 

    } 
} 
1
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 

} 
2

读取整个字符串,处理它的每个字符,将结果放入一个字符串中并将其存储到目标editText或TextView中。

如果你想要做这个活,捕捉任何有效键的KeyEvent的,检索的EditText整个字符串,替换以任何你想要的最后一个字符,并把结果存储到目标视图。

相关问题