0

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

我用了

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

(想想你就是这样做的,它工作得很好)但是当我在我的 int 中使用相同的代码时,它就不起作用了。现在我该如何编写它以便它可以获取用户输入并将其存储在我的 int 中多变的?

这是我的代码:

        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

        }});
4

3 回答 3

3

用于Integer.parseInt(yourString)从 a 中获取整数值String

更多在这里

在你的情况下:

try {
    int myInt = Integer.parseInt(numberInput.getText().toString());
}
catch (NumberFormatException nfe) {
    nfe.printStackTrace();
}
于 2013-06-08T06:47:55.890 回答
1

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

为了避免这种情况 - 添加

android:inputType="numberSigned"

属性到布局 xml 中的编辑文本。使用此属性,用户将无法输入除正数或负数以外的任何内容。

在此处查看详细信息

在此之后您可以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();
    }
于 2013-06-08T07:42:15.413 回答
0
String nameIn;
int nameInt;
try {
  nameInt = Integer.parseInt(nameIn);
} catch(NumberFormatException e) {
  e.printStackTrace();
  Log.i("Log", "Not a number")
}
于 2013-06-08T06:50:21.547 回答