我想将用户的输入存储在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
}});
答案 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")
}