如何调用数字选择器的功能

时间:2011-11-12 15:07:12

标签: android object picker

我认为以下是一个基本问题。

我使用此号码选择器,因为Android SDK没有提供: http://www.quietlycoding.com/?p=5&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()调用它,我必须声明它是静态的,这有一些负面的副作用。

有人知道如何获取picker类的对象以调用getCurrent()函数吗?

我认为创建一个新对象很简单,这不是正确的方法,因为我想从我的alerdialog中的运行对象中调用该函数。

编辑: 正如我所料:

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

这给了我总是0

编辑2: 我添加了一个Android ID:

<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 个答案:

答案 0 :(得分:2)

  

有人知道如何获取picker类的对象以调用getCurrent()函数吗?

  1. 为您的布局XML中的android:id元素添加NumberPicker值。

  2. 当您为AlertDialog扩充布局时,请在充气布局上调用findViewById(),传入步骤1中提供的ID,并将结果转换为{{ 1}}。