Поймать клавиатуру «Готово» для NumberPicker

у меня естьAlertDialog только с некоторым текстом,NumberPicker, OK и Отмена.

package org.dyndns.schep.example;
import android.os.Bundler;
import android.view.View;
import android.widget.NumberPicker;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;

public class FooFragment extends DialogFragment {
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mParent = (MainActivity) activity;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                mParent.setFoo(foo());
            }
        })
        .setNegativeButton(android.R.string.cancel, null);

        View view = getActivity().getLayoutInflater.inflate(
                R.layout.dialog_foo, null);
        mPicker = (NumberPicker) view.findViewById(R.id.numberPicker1);
        mPicker.setValue(mParent.getFoo());
        builder.setView(view);
        return builder.create();
    }

    public int foo() {
        return mPicker.getValue();
    }

    private MainActivity mParent;
    private NumberPicker mPicker;
}

(Я знаю, что этот диалог еще не выполняет все необходимые функции, чтобы сохранить состояние «Пауза и возобновление».)

Мне бы хотелось, чтобы действие «Готово» на программной клавиатуре или в другом IME закрывало диалоговое окно, как если бы была нажата кнопка «ОК», поскольку для редактирования доступен только один виджет.

Похоже, что лучший способ справиться с IME "Готово", как правило,setOnEditorActionListener наTextView, Но у меня нет никакихTextView переменная иNumberPicker явно не подвергаетTextViewили аналогичные обратные вызовы редактора. (Может бытьNumberPicker содержитTextView с постоянным идентификатором я мог бы найти для использованияfindViewById?)

NumberPicker.setOnValueChangedListener срабатывает при действии «Готово», но оно также срабатывает при нажатии или щелчке по списку чисел, что определенно не должно закрывать диалоговое окно.

На основеэто вопрос, я пытался проверитьsetOnKeyListener, но этот интерфейс вообще не срабатывает при использовании программной клавиатуры. Не полная неожиданность, так какKeyEvent Документация предполагает, что она предназначена больше для аппаратных событий, а в последних API программная клавиатура их вообще не отправляет.

Как я могу подключить IME "Готово" к действию моего диалога "ОК"?

Изменить: Исходя из внешнего вида,NumberPicker макет действительно содержитEditText, но его идентификаторid/numberpicker_input в упаковкеcom.android.internal, Использовать это было бы нелегко, и это явно не рекомендуется. Но кажется, что могут быть только хакерские способы получить поведение, которое я хочу.

Ответы на вопрос(2)

Ваш ответ на вопрос