2011-12-27 76 views
0

我有以下具有textview和edittext的应用程序。当edittext的值发生变化时,它会更新textview的内容。现在我想要将该值作为整数接收。这是当前的应用程序:
Android EditText十进制整数值

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(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

您应该能够使用

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

通过与变量替换我,你要设置的整数,在你的情况“sourceData”,并通过与你的EditText框的名称替换EditText上,这样的“源”

所以,你会得到这样的:

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)); 
} 
} 
+0

Aaah thanx guys!这段代码就是我一直在寻找的东西! destination.setText(Integer.toString(sourceData)); 你真的帮了我。感谢名单! – Anomaly 2011-12-27 14:36:13

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)); 
} 
+0

啊哈感谢名单家伙!这段代码就是我一直在寻找的东西! destination.setText(Integer.toString(sourceData)); 你真的帮了我。感谢名单! – Anomaly 2011-12-27 14:36:20