Android EditText十进制整数值

时间:2011-12-27 14:10:34

标签: android string integer android-edittext

我有以下具有textview和edittext的应用程序。当edittext的值更改时,它会更新textview的内容。现在我希望将值作为整数接收。这是当前的应用程序:

package your.test.two;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class TesttwoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    EditText input = (EditText)findViewById(R.id.editText1);
    input.addTextChangedListener(new TextWatcher(){
        public void afterTextChanged(Editable s){
            update();
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after){}
        public void onTextChanged(CharSequence s, int start, int before, int count){}
    });
}

public void update(){
    EditText source = (EditText)findViewById(R.id.editText1);
    Editable sourceData = source.getText();
    TextView destination = (TextView)findViewById(R.id.textView1);
    destination.setText(sourceData);
}
}


现在我希望sourceData可编辑以某种方式转换为整数,以便我可以在其上执行if语句,如下所示:

if(sourceData>255){
  sourceData = 0;
}

我已经通过在editText1中添加以下行来更改main.xml中edittext的值:

android:inputType="number"
android:maxLength="3"
android:numeric="integer"

有人可以给我一些关于如何做到这一点的指导。谷歌搜索它,但我最终得到的是:

Integer i = Integer.parseInt(edittext.gettext().tostring());

&安培;

Integer i = Integer.valueOf(String s);

我不太了解那些工作或理解它。请帮忙!? :(

2 个答案:

答案 0 :(得分:2)

你应该可以使用

Integer i = Integer.parseInt(edittext.gettext().tostring());

通过将您想要设置整数的变量替换为i,在您的情况下为“sourceData”,并将edittext替换为您的edittext框的名称,所以“source”

所以你会得到这样的东西:

public void update(){
    EditText source = (EditText)findViewById(R.id.editText1);
    Integer sourceData = Integer.parseInt(source.getText().toString());
    TextView destination = (TextView)findViewById(R.id.textView1);
    destination.setText(Integer.toString(sourceData));
}
}

答案 1 :(得分:1)

即使您可以将EditText的XML中的属性设置为数字,也只是阻止用户输入非数字的其他信息。 EditText中的文本始终为String。不过,您可以将其转换为整数,然后执行您的条件:

public void update() {
    EditText source = (EditText)findViewById(R.id.editText1);
    int sourceData = Integer.valueOf(source.getText().toString());

    if (sourceData > 255) {
        sourceData = 0;
    }

    TextView destination = (TextView)findViewById(R.id.textView1);
    destination.setText(Integer.toString(sourceData));
}