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

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

DialogFragmentを使ってダイアログ表示と消費税計算処理実装!

今回はDialogFragmetでダイアログを扱ってみようと思います!

作った電卓アプリにダイアログを使った消費税計算機能を追加していきます。

1. ダイアログ表示用のボタンを配置

ダイアログを表示するためのボタンを配置していきます。
f:id:mtnanao:20200227221455p:plain

今回は消費税ボタンを追加しました!
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. 動作確認

それでは動かして確認してみます!
f:id:mtnanao:20200229113645p:plain

100を入力して消費税ボタンを押すと、ダイアログが出てきました。
8%を押してみます。

f:id:mtnanao:20200229113731p:plain

108になりました!
ここから続けて演算することもできました(^^)/


それでは今回はここまでです!
お疲れさまでした♪