Verwenden einer EditText-Objekt-XML, die wie folgt definiert ist:
<EditText
android:id="@+id/create_survey_newquestion_editText_minvalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:ems="4"
android:imeOptions="actionDone"
android:inputType="number" />
Wir können seinen Text erfassen i) wenn der Benutzer auf der Softtastatur (OnEditorActionListener) auf die Schaltfläche Fertig klickt oder ii) wenn der EditText den Benutzerfokus (OnFocusChangeListener) verloren hat, der sich jetzt auf einem anderen EditText befindet:
editText= (EditText) this.viewGroup.findViewById(R.id.create_survey_newquestion_editText_minvalue);
editText.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
String input;
if(actionId == EditorInfo.IME_ACTION_DONE)
{
input= v.getText().toString();
MyActivity.calculate(input);
return true;
}
return false;
}
});
editText.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
String input;
EditText editText;
if(!hasFocus)
{
editText= (EditText) v;
input= editText.getText().toString();
MyActivity.calculate(input);
}
}
});
Das funktioniert bei mir. Sie können die Softtastatur nach den Berechnungen mit einem Code wie dem folgenden ausblenden:
private void hideKeyboard(EditText editText)
{
InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
Bearbeiten: Rückgabewerte zu onEditorAction hinzugefügt