1

I have a single button which I want to use as Start/Stop button. How can I make the buttonfield work as toggle button?

Please help.

Maksym Gontar
  • 22,765
  • 10
  • 78
  • 114
Pria
  • 2,743
  • 4
  • 27
  • 30

1 Answers1

4

Just change button label on fieldChange or navigationClick or touchEvent, don't forget to save toggle state in class member:

class ToggleButtonField extends ButtonField {
    int mToggleState = -1;
    String[] mLabels = {};
    public ToggleButtonField(String[] labels) {
        super(CONSUME_CLICK);
        if(labels != null && labels.length > 0)
        {
            mLabels = labels;
            mToggleState = 0;
            updateLabel();                  
        }       
    }

    private void updateLabel() {
        setLabel(mLabels[mToggleState]);        
    }

    protected void fieldChangeNotify(int context) {
        mToggleState = getNextToggleState(mToggleState);
        updateLabel();
        super.fieldChangeNotify(context);
    }

    private int getNextToggleState(int state) {
        int result = mToggleState+1;
        if(result >= mLabels.length)
            result = 0;
        return result;
    }
}
Maksym Gontar
  • 22,765
  • 10
  • 78
  • 114
  • Hi there i tried using this class like - String[] labels={"Yes","No"}; edord = new ToggleButtonField(labels); edord.setChangeListener(this); grid2.add(edord);//But i dont see anything on screen what else do i need to do – Jatin May 10 '12 at 10:55
  • @Jatin does grid2 stands for GridFieldManager? Have you added grid2 to screen manager? If still not work, can you post new question in satckoverflow and put link here in comment? Thank you. – Maksym Gontar May 19 '12 at 05:29