【问题标题】:Show AlertDialog when the property Maxlenght a EditText are exceeded超过属性 Maxlenght 和 EditText 时显示 AlertDialog
【发布时间】:2015-03-03 09:45:30
【问题描述】:

我现在要做的是弹出一个对话框,当你超过EditText的字符插入时,在XML文件中maxlenght设置为“15”,之后用户可以继续按键盘但是当然没有用,然后我会弹出对话框(AlertDialog),指示用户已超过输入的字符数限制。

我将向您展示创建的方法、发送消息的操作、控件的 AlertDialog 以及限制字符的 AlertDialog

public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String messaggio = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, messaggio);
    if (messaggio.equals("")) {
        finestraInfo();
    }else {
        startActivity(intent); 
        editText.setText("");
    }
}

//AlertDialog message empty
public void finestraInfo() {
    AlertDialog.Builder info = new AlertDialog.Builder(this);
    info.setTitle("Info");
    info.setMessage("Empty message, enter message!");
    info.setPositiveButton("Ok", null);
    info.create().show();
}

//AlerDialog limited
public void infoLimiteParole(){
    AlertDialog.Builder info = new AlertDialog.Builder(this);
    info.setTitle("Info");
    info.setMessage("Character limit exceeded.!");
    info.setPositiveButton("Ok", null);
    info.create().show();
}

如何使 EditText (id = edit_message) 与 AlertDialog 交互?我可以在什么基础上进行验证检查?

【问题讨论】:

    标签: android android-edittext android-alertdialog


    【解决方案1】:

    一次尝试如下

    editText.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
    
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                if(s.toString().length()>15)
                    infoLimiteParole();
            }
        });
    

    希望对你有帮助。

    【讨论】:

    • 这个解决方案似乎给出了一些问题,似乎有效,但并不总是有效,alertDilog 并不总是出现。可能是 infoLimiteParole() 方法的问题?编辑如果控制 if (s.toString ().Length ()> 15) 它施加在 beforeTextChanged 中,我知道当我按下按钮“发送消息”时,似乎很快出现,方法 infoLimiteParole () 之后的消息其中,回到第一个Activity,当我在EditText中写入,并克服了字符集,然后出现AlerDialog inforLimiteParole方法。
    【解决方案2】:

    您应该通过 EditText 的 addTextChangedListener() 方法使用 TextWatcher

    EditText myText = (EditText) findViewById(R.id.text);
    myText.addTextChangedListener(new TextWatcher()
    {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
            if (s.length() > n)
            {
               // Show Dialog that limit is exceeded
            }
        }
    
        @Override
        public void afterTextChanged(Editable s)
        {
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2017-09-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多