1

I have an activity with two EditTexts. If, in landscape mode, I select the first EditText, the keyboard that is displayed has a "next" button which should allow me to type in the second EditText. Likewise, the second EditText has a "done" button, which I would like to handle for completing the activity. How can I handle the selection of these buttons?

Phil
  • 35,852
  • 23
  • 123
  • 164

1 Answers1

3

There is fairly little documentation on how to solve this issue. I found a good solution here. Basically, you can add an IMEoption for each of the EditTexts: For the first one:

      android:imeOptions="actionNext"

For the second one:

      android:imeOptions="actionDone"

To handle these in the code, try something like this:

EditText departureAddress, destinationAddress;
departureAddress = (EditText)findViewById(R.id.departure);
//Set the action of the "next" button to bring destinationAddress to focus
destinationAddress(new OnEditorActionListener(){
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  if (actionId == EditorInfo.IME_ACTION_NEXT) {
      destinationAddress.requestFocus();
  }
  return true;
}
  });
  destinationAddress = (EditText)findViewById(R.id.destination);
  //Set the action of the "done" button to handle the map query
  destinationAddress.setOnEditorActionListener(new OnEditorActionListener(){
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  if (actionId == EditorInfo.IME_ACTION_DONE) {
      //Handle map query
  }
  return true;
}
  });
Community
  • 1
  • 1
Phil
  • 35,852
  • 23
  • 123
  • 164