diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java b/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java
index afcdb6a761176e169849c34aa232b9644b1427d9..fe0922828b8a68351fbbd58e611dc8ae4b6d4168 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java
@@ -5,6 +5,8 @@ import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.Button;
 import android.widget.EditText;
+import android.text.TextWatcher;
+import android.text.Editable;
 
 
 class Stepper extends LinearLayout{
@@ -36,6 +38,16 @@ class Stepper extends LinearLayout{
 				dec();
 			}
 		});
+		_valTxt.addTextChangedListener(new TextWatcher() {
+			public void afterTextChanged(Editable s){}
+			public void beforeTextChanged(CharSequence s, int start, int count, int after){}
+			public void onTextChanged(CharSequence s, int start, int before, int count) {
+				try {
+					setValueButText(Integer.parseInt(s.toString()));
+				}
+				catch (NumberFormatException e) {}
+			}
+		});
 	}
 
 	public interface OnValueChangedListener {
@@ -50,13 +62,16 @@ class Stepper extends LinearLayout{
 	public void setMaximum(int max){_max = max;}
 	public void setMinimum(int min){_min = min;}
 	public void setValue(int val){
+		setValueButText(val);
+		_valTxt.setText(Integer.toString(_val));
+	}
+	public void setValueButText(int val){
 		if(_max > _min) {
 			if(val == _max) _incBtn.setEnabled(false);
 			else if(val == _min) _decBtn.setEnabled(false);
 			else {_incBtn.setEnabled(true); _decBtn.setEnabled(true);} 
 		}
 		_val = val;
-		_valTxt.setText(Integer.toString(_val));
 		if(_listener != null) _listener.onValueChanged();
 	}
 	public int getMaximum(){return _max;}