2011-12-27 4 views
0

У меня есть следующее приложение с текстовым изображением и редактором. Когда значение 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; 
} 

Я уже изменил значения edittext в main.xml, добавив следующие строки для редактированияText1:

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

заменяя I с переменной, которую вы хотите установить целое число в в ваш случай «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 ребята! Этот бит кода был тем, что я искал! destination.setText (Integer.toString (sourceData)); Ты действительно помог мне. Thanx! – Anomaly

1

Даже если вы можете установить свойства в XML-файле EditText как числовые, это просто запретит пользователю вводить другую информацию, которая не является числовой. Текст в EditText всегда будет строкой. тем не менее, вы можете преобразовать его в целое число, а затем выполнить ваше условие:

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

Aaah Thanx ребята! Этот бит кода был тем, что я искал! destination.setText (Integer.toString (sourceData)); Ты действительно помог мне. Thanx! – Anomaly

Смежные вопросы