Как вызвать функцию выбора номера

#android #object #picker

#Android #объект #средство выбора

Вопрос:

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

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

Я интегрировал ее в раздутый alertdialog. Здесь раздутый макет:

 <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>
  

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

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

  public static int getCurrent() {
        return mCurrent;
    }
  

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

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

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

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

 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. Вместо того, чтобы использовать встроенный NumberPicker, почему бы вам не взглянуть на эту библиотеку пользовательского интерфейса: code.google.com/p/android-wheel ?

Ответ №1:

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

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

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

Комментарии:

1. Спасибо. Я думаю, что это правильный путь. Но теперь мое приложение выходит из строя. Я добавляю свой новый код к сообщению выше.