DialogFragmentを使ってダイアログ表示と消費税計算処理実装!
今回はDialogFragmetでダイアログを扱ってみようと思います!
作った電卓アプリにダイアログを使った消費税計算機能を追加していきます。
1. ダイアログ表示用のボタンを配置
ダイアログを表示するためのボタンを配置していきます。
今回は消費税ボタンを追加しました!
8%か10%かをダイアログから選択できるようにしていきたいと思います。
2. ボタンからダイアログ表示処理を実装
消費税ボタンが押された場合にダイアログを表示するように実装をしていきます。
MainActivity#onCreateメソッド
追加したボタンに対してイベントリスナーを設定します。
findViewById(R.id.tax).setOnClickListener(this);
MainActivity#onClickメソッド
onClickメソッドには消費税ボタンが押された場合の処理を書いていきます。
ここで出てくるTaxDialogFragmentクラスについては後述します!
// 消費税が押された場合の処理 case R.id.tax: DialogFragment taxDialog = new TaxDialogFragment(); FragmentManager manager = getSupportFragmentManager(); taxDialog.show(manager, "tax"); break;
TaxDialogFragment内で実装したダイアログをshowで表示しています。
TaxDialogFragmenクラス
今回新規に作成したTaxDialogFragmentクラスになります。
public class TaxDialogFragment extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { CharSequence[] taxPercent = {"8%", "10%"}; Activity activity = getActivity(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setItems(taxPercent, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MainActivity mainActivity = (MainActivity) getActivity(); switch(which){ // 8%が押された場合は、calcTaxメソッドに"8"を渡す case 0: mainActivity.calcTax("8"); break; // 10%が押された場合は、calcTaxメソッドに"10"を渡す case 1: mainActivity.calcTax("10"); break; } } }); return builder.create(); } }
AlertDialog.Builder#setItemsにダイアログに表示したいリストを設定し、それぞれ選択された場合の処理を実装しています。
今回は選択肢として8%と10%を用意しています。
case文における判断は、設定した配列の何番目かで分岐させます。
呼び出し元のMainActivity#calcTaxで消費税計算と画面表示をしています。
MainActivity#calcTaxメソッド
消費税計算処理です。
public void calcTax(String tax){ if (tax.equals("8")) { resultNum = Math.floor(Double.parseDouble(tmpCalcNum) * 1.08); } else if (tax.equals("10")) { resultNum = Math.floor(Double.parseDouble(tmpCalcNum) * 1.10); } viewNum = calc.getText().toString().replaceAll(tmpCalcNum + "$", resultNum.toString()).replace(".0", ""); tmpCalcNum = resultNum.toString().replace(".0", "");; calc.setText(viewNum); }
受け取った引数を元に消費税計算と表示です。
計算後の小数点以下は切り捨てます。
3. 動作確認
それでは動かして確認してみます!
100を入力して消費税ボタンを押すと、ダイアログが出てきました。
8%を押してみます。
108になりました!
ここから続けて演算することもできました(^^)/
それでは今回はここまでです!
お疲れさまでした♪