EditText的方法append()在自定义对话框中不起作用

时间:2016-01-27 19:54:00

标签: android android-edittext

我正在尝试在EditText字段中为输入文本添加一些字符,但方法append()不起作用。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.temp, container, false);
        button = (Button)rootView.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final Dialog dialog = new Dialog(getActivity());
                dialog.setContentView(R.layout.enter_sms_dialog);
                dialog.setTitle(Html.fromHtml("<font color='#000000'>Phone number verification</font>"));
                edSmsCode = (EditText) dialog.findViewById(R.id.edSmsCode);
                edSmsCode.addTextChangedListener(new TextWatcher() {
                    int len = 0;
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        String str = edSmsCode.getText().toString();
                        len = str.length();
                    }
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {}
                    @Override
                    public void afterTextChanged(Editable s) {
                        String str = edSmsCode.getText().toString();
                        if (str.length() == 3 && len < str.length()) {
                            edSmsCode.append("-");
                        }
                    }
                });
                dialog.show();
            }
        });
        return rootView;
    }

但是当我在Fragment的根视图中将此代码用于EditText时,此方法可行。这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

尝试在afterTextChanged()方法中用(EditText)getCurrentFocus()替换edSmsCode(获取被聚焦的视图,在本例中为editText)。

public void afterTextChanged(Editable s) {
   EditText editText = (EditText)getCurrentFocus();
   String str = editText.getText().toString();
   if (str.length() == 3 && len < str.length()) { 
      editText.append("-");
   }
}

来源:https://stackoverflow.com/a/5951792/5837758

如果这不能解决问题,你可以尝试将edSmsCode设置为final,根据这个答案:https://stackoverflow.com/a/27094374/5837758

相关问题