Наилучшим вариантом использования события нажатия в ButtonField является использование FieldChangeListener . Просто реализуйте интерфейс FieldChangeListener и примените ButtonField. setChangeListener () :
class MenuScreen extends MainScreen implements FieldChangeListener {
EditField mNumberAEditField;
EditField mNumberBEditField;
ButtonField mAddButtonField;
public MenuScreen() {
super(DEFAULT_CLOSE);
mNumberAEditField = new EditField("A:", "2", 10,
EditField.FILTER_INTEGER);
add(mNumberAEditField);
mNumberBEditField = new EditField("B:", "2", 10,
EditField.FILTER_INTEGER);
add(mNumberBEditField);
mAddButtonField = new ButtonField("A + B",
ButtonField.CONSUME_CLICK);
add(mAddButtonField);
mAddButtonField.setChangeListener(this);
}
public void fieldChanged(Field field, int context) {
if(field == mAddButtonField)
{
showAddResult();
}
}
private void showAddResult() {
String message = "";
String aStr = mNumberAEditField.getText();
String bStr = mNumberBEditField.getText();
if(aStr == "")
message = "Enter A value!";
else if(bStr == "")
message = "Enter B value!";
else
{
int res = Integer.parseInt(aStr)+Integer.parseInt(bStr);
message = aStr+" + "+bStr+" = "+String.valueOf(res);
}
Dialog.inform(message);
}
}
Другой вариант с FieldChangeListener - объявить и реализовать его в строке. чем вам не нужно будет проверять, из какого поля наступает событие:
mAddButtonField.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
showAddResult();
}
});