【问题标题】:Number range on an edittext - only want numbers between 1 and 10编辑文本上的数字范围 - 只需要 1 到 10 之间的数字
【发布时间】:2015-03-02 18:54:42
【问题描述】:

我正在尝试制作一个只允许用户输入 1 到 10 之间的应用程序,我尝试编写自己的方法,如果数字超出该范围,它将文本视图更改为 ERROR 并清除编辑文本中有什么,但是它会使应用程序崩溃。有谁知道它有什么问题?安卓新手。

代码:

    public void buttonClick (View v)
{



    TextView tvNum = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvName = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvNameEnt = (TextView) findViewById(R.id.NameEnt);
    TextView tvNumEnt = (TextView) findViewById(R.id.NumEnt);

    EditText num = (EditText) findViewById(R.id.ETnumber);
    EditText name = (EditText) findViewById(R.id.ETname);

    String nameContent = name.getText().toString();
    String numContent = num.getText().toString();

    tvName.setText(nameContent);

        int value = Integer.parseInt(num.getText().toString());
        if (value > 10)
        {
            tvNum.setText("ERROR");
            num.getText().clear();
            name.getText().clear();

        }
        else if (value < 1)
        {
            tvNum.setText("ERROR");
            num.getText().clear();
            name.getText().clear();
        }
        else
        {



            tvNum.setText(numContent);

            tvNameEnt.setVisibility(View.VISIBLE);
            tvNumEnt.setVisibility(View.VISIBLE);
            tvName.setVisibility(View.VISIBLE);
            tvNum.setVisibility(View.VISIBLE);
        }

}

【问题讨论】:

    标签: android button onclick range


    【解决方案1】:

    你在这行有问题

    int value = Integer.parseInt(num.toString());
    

    改为:

    int value = Integer.parseInt(num.getText().toString());
    

    现在您从 ObjectEditText 对象调用 toString() 方法。您必须先调用getText() 方法,然后再调用toString() 方法CharSequence

    更新: 您会发现两次具有相同 ID 的相同视图。看下面的代码:

    TextView tvNum = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvName = (TextView) findViewById(R.id.tvNumEnt);
    

    第二次应该有R.id.tvNumEnt,我觉得是……

    TextView tvNum = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvName = (TextView) findViewById(R.id.tvNumEnt);
    

    【讨论】:

    • 谢谢你 - 会选择这个答案 - 我已经更新了上面的代码,现在它可以工作了,但是它似乎没有将 tvName 更改为输入的内容,我已经尝试过输入和输出的 if 语句,无法弄清楚为什么它没有改变它。任何帮助将不胜感激。
    • 欢迎,我很高兴能帮助你,祝你好运
    • 对这个问题有任何想法吗? :)
    • 上多想你两次设置同一个文本视图 TextView tvNum = (TextView) findViewById(R.id.tvNumEnt); TextView tvName = (TextView) findViewById(R.id.tvNumEnt);这里是相同 id 的两倍
    • @MikeHunt 看看我的更新,也许对你有帮助
    【解决方案2】:

    这里的主要问题是您尝试使用:num.toString() 获取编辑文本中的数字,而不是您必须使用:num.getText().toString()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多