Android EditText Десятичное целое значение - PullRequest
0 голосов
/ 27 декабря 2011

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


Теперь я хочу, чтобы редактируемые исходные данные каким-то образом были преобразованы в целое число, чтобы я мог сделать для него оператор if следующим образом:

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

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

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

Может кто-нибудь дать мне несколько советов относительно того, как это можно сделать, пожалуйста. Я гуглил это, но все, что я в итоге получаю, это такие вещи, как:

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

&

Integer i = Integer.valueOf(String s);

И я не совсем заставляю их работать или понимать это. Пожалуйста помоги!? (

Ответы [ 2 ]

2 голосов
/ 27 декабря 2011

Вы должны быть в состоянии использовать

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 голос
/ 27 декабря 2011

Даже если вы можете установить свойства в 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));
}
...