Android java EditText为int

时间:2013-06-08 06:47:01

标签: android android-edittext

我想将用户的输入存储在EditText框中,并将它们存储为字符串,以便我可以访问它。

我用过

               nameIn = name.toString();
               Log.i(null, nameIn); 

(想想你是怎么做的,它运作良好) 但是当我在我的int中使用相同的代码时,它不会工作.. 现在我如何编写它以便它可以获取用户输入并将其存储在我的i​​nt变量中?

这是我的代码:

        TextView nameText = (TextView) findViewById(R.id.nameText);
    TextView numberText = (TextView) findViewById(R.id.numberText);

    EditText nameInput = (EditText) findViewById(R.id.nameInput);
    EditText numberInput = (EditText) findViewById(R.id.numberInput);

    nameInput.addTextChangedListener(new TextWatcher(){

        @Override
        public void afterTextChanged(Editable name) {
        nameIn = name.toString();
        Log.i(null, nameIn);    
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }



    });


    numberInput.addTextChangedListener(new TextWatcher(){

        @Override
        public void afterTextChanged(Editable number) {

            //this bit im stuck storing the inputted text to an int



        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }});

3 个答案:

答案 0 :(得分:3)

使用Integer.parseInt(yourString)String获取整数值。

更多here

在你的情况下:

try {
    int myInt = Integer.parseInt(numberInput.getText().toString());
}
catch (NumberFormatException nfe) {
    nfe.printStackTrace();
}

答案 1 :(得分:1)

可能您尝试解析非数值。如果您的输入包含空格而不是数字字符 - Integer.parseInt()方法将失败并抛出NumberFormatException。

为避免这种情况,请添加

android:inputType="numberSigned"

属性为layout xml中的edittext。使用此属性,用户将无法输入正数或负数以外的任何数字。

查看详情here.

在此之后,您可以安全地使用Iteger.parseInt()方法,我建议使用String.trim()删除输入开头和结尾的任何空白字符(如果包含):

@Override
public void afterTextChanged(Editable number) {
    String numberStr = number.toString().trim();
    //check if your input is not empty
    if (numberStr.isEmpty()) return;
    try {
        //you should create numberIn int type variable like nameIn
        numberIn = Integer.parseInt(numberStr);
    }
    catch (NumberFormatException e) {
        e.printStackTrace();
    }

答案 2 :(得分:0)

String nameIn;
int nameInt;
try {
  nameInt = Integer.parseInt(nameIn);
} catch(NumberFormatException e) {
  e.printStackTrace();
  Log.i("Log", "Not a number")
}