Как вызвать функцию выбора номера - PullRequest
0 голосов
/ 12 ноября 2011

Я думаю, что следующая проблема является основной.

Я использую этот сборщик номеров, поскольку Android SDK не предоставляет ни одного: http://www.quietlycoding.com/?p=5&cpage=1#comment-10645

Я включил его в раздутый алерты.Вот раздутая раскладка:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
>
    <com.example.NumberPicker
        android:padding="10dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

Я добавил кнопку в alerttdialog.Если щелкнуть по нему, я хочу получить текущее значение средства выбора номера.

Класс выбора чисел предоставляет функцию:

 public static int getCurrent() {
        return mCurrent;
    }

Проблема в том, что я не знаю, как его вызвать.У меня нет объекта класса.Если я вызываю его через com.example.NumberPicker.getCurrent (), я должен объявить его статическим, и это имеет некоторые негативные побочные эффекты.

Кто-то знает, как я получаю объект класса выбора в порядкевызвать функцию getCurrent ()?

Я думаю, что просто создать новый объект - неправильный путь, потому что я хочу вызывать функцию из запущенного объекта в моем алердиалоге.

Редактировать: Как я и ожидал:

NumberPicker np = new NumberPicker(MainScreen.this);
Log.v("TEST", "" + np.getCurrent());

Это всегда дает мне 0

Редактировать 2: Я добавил идентификатор Android:

<com.example.NumberPicker
        android:id="@+id/numberPicker"
        android:padding="10dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

Я выполняю следующий код:

    LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(
                    R.layout.backfall_layout, null);



            new AlertDialog.Builder(MainScreen.this)
                    .setTitle(this.getString(R.string.relapse))
                    .setView(textEntryView)
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int whichButton) {
                                NumberPicker np = (NumberPicker) findViewById(R.id.numberPicker);

                                Log.v("TEST", "" + np.getCurrent());

--

Но теперь мое приложение зависает после нажатия кнопки ..

Редактировать 3:

Решено: мне нужно позвонить

NumberPicker np = (NumberPicker) textEntryView.findViewById(R.id.cigarettesPicker);
            np.setCurrent(1);

1 Ответ

2 голосов
/ 12 ноября 2011

Кто-нибудь знает, как я получаю объект класса средства выбора для вызова функции getCurrent ()?

  1. Добавьте значение android:id к элементу NumberPicker в XML макета.

  2. Когда вы надуете макет для вашего AlertDialog, вызовите findViewById() на надутом макете, передав ID, который вы указали на шаге 1, и приведя результат к NumberPicker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...