3131import java .math .BigDecimal ;
3232import java .text .NumberFormat ;
3333
34+ import androidx .annotation .NonNull ;
3435import androidx .annotation .Nullable ;
3536import androidx .appcompat .app .AppCompatActivity ;
3637import androidx .fragment .app .FragmentManager ;
@@ -44,6 +45,9 @@ public class MainActivity extends AppCompatActivity implements CalcDialog.CalcDi
4445 @ Nullable
4546 private BigDecimal value ;
4647
48+ @ NonNull
49+ private NumberFormat nbFmt = NumberFormat .getInstance ();
50+
4751 @ Override
4852 protected void onCreate (Bundle state ) {
4953 super .onCreate (state );
@@ -125,20 +129,19 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
125129 @ Override
126130 public void onClick (View v ) {
127131 // Set dialog settings
128- NumberFormat nbFmt ;
129132 if (nbFmtTypeGroup .getCheckedRadioButtonId () == R .id .radio_nbfmt_default ) {
130133 nbFmt = NumberFormat .getInstance ();
131134 } else {
132135 nbFmt = NumberFormat .getCurrencyInstance ();
133136 }
134137 nbFmt .setMaximumIntegerDigits (maxIntChk .isChecked () ?
135138 Integer .valueOf (maxIntEdt .getText ().toString ()) : Integer .MAX_VALUE );
136- nbFmt .setMaximumFractionDigits (maxFracChk .isChecked () ?
139+ nbFmt .setMaximumFractionDigits (maxFracChk .isChecked () && minValEdt . length () > 0 ?
137140 Integer .valueOf (maxFracEdt .getText ().toString ()) : Integer .MAX_VALUE );
138141
139- BigDecimal minValue = minValChk .isChecked () ?
142+ BigDecimal minValue = minValChk .isChecked () && minValEdt . length () > 0 ?
140143 new BigDecimal (minValEdt .getText ().toString ()) : null ;
141- BigDecimal maxValue = maxValChk .isChecked () ?
144+ BigDecimal maxValue = maxValChk .isChecked () && maxValEdt . length () > 0 ?
142145 new BigDecimal (maxValEdt .getText ().toString ()) : null ;
143146 CalcNumpadLayout numpadLayout = numpadLayoutGroup .getCheckedRadioButtonId () == R .id .radio_numpad_calc ?
144147 CalcNumpadLayout .CALCULATOR : CalcNumpadLayout .PHONE ;
@@ -192,7 +195,7 @@ private void updateValueText() {
192195 if (value == null ) {
193196 valueTxv .setText (R .string .result_value_none );
194197 } else {
195- valueTxv .setText (value . toPlainString ( ));
198+ valueTxv .setText (nbFmt . format ( value ));
196199 }
197200 }
198201
0 commit comments