【问题标题】:How to read a single character from an EditText in Android?如何从 Android 中的 EditText 读取单个字符?
【发布时间】:2012-07-05 14:25:09
【问题描述】:

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

我该怎么做?

更新: 编辑文本中的文本将在单击按钮时进行编码。

【问题讨论】:

  • 你不能只读取整个字符串并执行 .ToCharArray() 吗?
  • 从编辑文本中获取字符串,从索引0到字符串长度的for循环,并在循环中使用charAt(index)方法。
  • 也许你可以澄清一下。您是想在输入时读取每个字符,还是将其全部编码一次(例如当用户按下按钮时)?
  • @yhyrcanus 是的,好主意。我应该自己想出来的。

标签: android android-edittext character


【解决方案1】:

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

如果您想实时执行此操作,请捕获任何有效键的键事件,从 edittext 中检索整个字符串,将最后一个字符替换为您想要的任何字符,并将结果存储到目标视图中。

【讨论】:

    【解决方案2】:

    您可以使用 InputFilter。

    当您继续在下面输入 sn-p 时,会将每个字符替换为 $。

    以下代码段将对您有所帮助。

    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});
    

    下面是我的工作 sn-p

    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
            });
    
        }
    }
    

    【讨论】:

      【解决方案3】:
      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
      
      }
      

      【讨论】:

        猜你喜欢
        • 2015-09-10
        • 2021-07-01
        • 2012-11-15
        • 2018-09-27
        • 1970-01-01
        • 2012-02-28
        • 2013-04-20
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多