9

私の編集フィールドをNumberPicker適切に機能させるのに問題があります。同様の質問に対するいくつかの役立つ回答を読みましたが、この特定の問題に対処しているようには見えません。インクリメント ボタンとデクリメント ボタンは正しく機能しますが、ソフト キーボードを使用して数値を入力すると、NumberPicker.getValue()メソッドを使用してその値を取得できません。私は自分のものを使ってみましNumberPicker.OnValueChangedListener()たが、ソフトキーボードの [完了] ボタンを押したときではなく、上または下のボタンをクリックしない限り呼び出されません。誰でもこれで私を助けることができますか? これは Android のバグですか?

ここに私のXMLレイアウトがあります:

<LinearLayout 
android:orientation="horizontal" 
android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView android:id="@+id/textView1" android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_height="wrap_content" android:text="@string/enter_nights_"
        android:layout_width="0dp" android:padding="10dip"
        android:textColor="@color/black"
        ></TextView>
    <NumberPicker
        android:id="@+id/numPick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

そして、Activity onCreate() からの初期化コード:

    mNumNights = (NumberPicker) findViewById(R.id.numPick);
    mNumNights.setMinValue(1);
    mNumNights.setMaxValue(99);
    mNumNights.setValue(mNights);
    mNumNights.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            // do something here
            Log.d(TAG, "Number of Nights change value.");
        }
    });

アクティビティを終了すると、次のような値が得られます。

            mNights = mNumNights.getValue();

Android NumberPicker のドキュメントに他のメソッドはありません。Done ボタンを取得するためにフックすることを提案する投稿を見ましたonEditorActionListener()が、これは値を取得する方法を教えてくれません! 要約すると、私の質問は、値を取得する方法と、NumberPicker がその値を自動的に更新しないのはなぜですか?

ありがとう!

編集:私は私の質問に非常に似ているこのSOの質問に出くわしました.そこに提案されているよりも良いアプローチがあることを望んでいますが、そこの答えは役に立ちます.

4

1 に答える 1

22

アクティビティに編集を取得させるには、 を呼び出すnNumNights.clearFocus();前に を呼び出す必要がありますnNumNights.getValue();。この呼び出しにより、コントロールの値が更新されます。

于 2014-03-03T20:16:09.230 に答える