NumberPickerを使って数字選択ダイアログを実装してみる
今回はNumberPickerを使って
ダイアログ上にピッカーを配置していきます。
電卓に新機能として割引計算機能を追加します。
ボタンの追加、イベントリスナーの追加は前回記事と同じなので省略します。
xprogrammingx.hatenablog.com
それではやっていきます。
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. 動作確認
それでは動かしてみます。
2000を入力して"割引"ボタンを押します。
ピッカーが2つ並んだダイアログが表示されましたね!
30%OFFの計算をしてみます。
計算結果も大丈夫そうです。
それでは今回はここまでです(^^)/
お疲れさまでした♪
最後にアプリの宣伝させてください(*^-^*)