アプリ開発初心者の暇つぶしAndroid体験記

アプリ開発初心者がAndroidアプリ開発始めました。日々学んだことをアウトプットしていきます。

NumberPickerを使って数字選択ダイアログを実装してみる

今回はNumberPickerを使って
ダイアログ上にピッカーを配置していきます。

電卓に新機能として割引計算機能を追加します。
ボタンの追加、イベントリスナーの追加は前回記事と同じなので省略します。
xprogrammingx.hatenablog.com

それではやっていきます。

1. ダイアログ用のレイアウトxmlを作成

ダイアログのレイアウトを定義するxmlファイルを新規に作成します。
sale_dialog.xmlというファイル名にしました。
f:id:mtnanao:20200229193416p:plain

2. NumberPickerを定義する

作成したsale_dialog.xmlにNumberPickerを定義していきます。

<NumberPicker
    android:id="@+id/numberPicker1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

これだけでピッカーが配置できます。

3. SaleDialogFragmentクラスの作成

SaleDialogFragmentを新規に作成します。

public class SaleDialogFragment extends DialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        LayoutInflater inflater =  getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.sale_dialog, null, false);

        final NumberPicker np1 = (NumberPicker) view.findViewById(R.id.numberPicker1);
        np1.setMinValue(0);
        np1.setMaxValue(9);

        final NumberPicker np2 = (NumberPicker) view.findViewById(R.id.numberPicker2);
        np2.setMinValue(0);
        np2.setMaxValue(9);

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("割引率");
        builder.setPositiveButton("決定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                MainActivity mainActivity = (MainActivity) getActivity();

                int rate = Integer.parseInt(String.valueOf(np1.getValue()) + String.valueOf(np2.getValue()));
                mainActivity.calcSale(rate);

            }
        });
        builder.setView(view);
        return builder.create();

    }
}

NumberPicker#setMaxValueとNumberPicker#setMinValueを使って、
ピッカーの最大値と最小値を設定しています。
今回は割引率を2桁で示すため1~9のピッカーを2つ並べています。

決定ボタンが押された時の処理をonClickのインナーメソッドに書いていきます。
MainActivutyクラス側にcalcSaleメソッドを準備し、
入力された割引率を引数にそのメソッドを呼び出します。

4. 動作確認

それでは動かしてみます。
f:id:mtnanao:20200229195710p:plain
2000を入力して"割引"ボタンを押します。

f:id:mtnanao:20200229195719p:plain
ピッカーが2つ並んだダイアログが表示されましたね!
30%OFFの計算をしてみます。

f:id:mtnanao:20200229195737p:plain
計算結果も大丈夫そうです。


それでは今回はここまでです(^^)/
お疲れさまでした♪


最後にアプリの宣伝させてください(*^-^*)

play.google.com