This application to calculate level and volume there are EditText elements created in xml file and the type of EditText is numberdecimal it run ok but after Inputfilter created by ranges from (0.3 to 8.2 ) and (300 to 8200) the numbers are doub
and when application simulated the EditText not accepted any number and EditTexts type as below
public class cal_nputfilter
implements InputFilter {
private double min, max;
public InputFilterMinMax2To5(double min, double max) {
this.min = min;
this.max = max;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
// Construct the new text
String newText = dest.subSequence(0, dstart) + source.toString() + dest.subSequence(dend, dest.length());
// Allow empty input (so user can delete text)
if (newText.isEmpty()) {
return null;
}
// Allow input of a single decimal point
if (newText.equals(".")) {
return "0.";
}
// Check if the new text is a valid number
double input = Double.parseDouble(newText);
// Check if input is within range
if (isInRange(min, max, input)) {
return null; // Accept the input
}
} catch (NumberFormatException nfe) {
// If parsing fails, don't accept the input
}
// If input is not valid, reject it
return "";
}
// Helper method to check if a number is within a specified range
private boolean isInRange(double min, double max, double value) {
return value >= min && value <= max;
}
}
And main activity code as below
package com.example.treatedtanksparameterscalculations;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.text.InputFilter;
import android.widget.Toast;
public class MainActivity2 extends AppCompatActivity {
Double level;
Double volume;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
final TextView tv_raw_raduis = findViewById(R.id.cal_tv_raw_raduis);
final TextView tv_raw_height = findViewById(R.id.Cal_tv_raw_height);
final TextView tv_raw_volume = findViewById(R.id.cal_tv_raw_volume);
final TextView tv_treated_raduis = findViewById(R.id.cal_tv_treated_raduis);
final TextView tv_treated_height = findViewById(R.id.Cal_tv_treated_height);
final TextView tv_treated_volume = findViewById(R.id.cal_tv_treated_volume);
final Spinner sp_tank = findViewById(R.id.cal_sp_tank);
final Spinner sp_unit = findViewById(R.id.cal_sp_unit);
final EditText et_rawl_by_percentage =findViewById(R.id.cal_et_rawl_by_percentage);
final EditText et_rawl_by_mm =findViewById(R.id.cal_et_rawl_by_mm);
final EditText et_rawl_by_m =findViewById(R.id.cal_et_rawl_by_m);
final EditText et_rawv_by_percentage =findViewById(R.id.cal_et_rawv_by_percentage);
final EditText et_rawv_by_mm =findViewById(R.id.cal_et_rawv_by_mm);
final EditText et_rawv_by_m =findViewById(R.id.cal_et_rawv_by_m);
final EditText et_treatedl_by_percentage =findViewById(R.id.cal_et_treatedl_by_percentage);
final EditText et_treatedl_by_mm =findViewById(R.id.cal_et_treatedl_by_mm);
final EditText et_treatedl_by_m =findViewById(R.id.cal_et_treatedl_by_m);
final EditText et_treatedv_by_percentage =findViewById(R.id.cal_et_treatedv_by_percentage);
final EditText et_treatedv_by_mm =findViewById(R.id.cal_et_treatedv_by_mm);
final EditText et_treatedv_by_m =findViewById(R.id.cal_et_treatedv_by_m);
final Button btn_calculate =findViewById(R.id.cal_btn_calculate);
final TextView tv_level_result =findViewById(R.id.cal_tv_level_result);
final TextView tv_volume_result =findViewById(R.id.cal_tv_volume_result);
final String [] level_unit = {"Select Level Result","Percentage","mm", "m"};
final String [] volume_unit = {"Select Volume Unit for Result","m3", "litre"};
final ArrayAdapter<String> adapter1 = new ArrayAdapter<>(this , android.R.layout.simple_spinner_dropdown_item, level_unit);
final ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this , android.R.layout.simple_spinner_dropdown_item, volume_unit);
cal_inputfilter filter1 = new cal_inputfilter(300.0, 8200.0);
cal_inputfilter filter2 = new cal_inputfilter(300.0, 5700.0);
cal_inputfilter filter3 = new cal_inputfilter(0.3, 8.2);
cal_inputfilter filter4 = new cal_inputfilter(0.3, 5.7);
cal_inputfilter filter5 = new cal_inputfilter(0.0, 100.0);
et_rawl_by_mm.setFilters(new InputFilter[]{ filter1});
et_treatedl_by_mm.setFilters(new InputFilter[]{ filter2});
et_rawv_by_mm.setFilters(new InputFilter[]{filter1});
et_treatedv_by_mm.setFilters(new InputFilter[]{ filter2});
et_rawl_by_m.setFilters(new InputFilter[]{ filter3});
et_rawv_by_m.setFilters(new InputFilter[]{ filter3});
et_treatedl_by_m.setFilters(new InputFilter[]{ filter4});
et_treatedv_by_m.setFilters(new InputFilter[]{ filter4});
et_rawl_by_percentage.setFilters(new InputFilter[]{filter5});
et_rawv_by_percentage.setFilters(new InputFilter[]{filter5});
et_treatedl_by_percentage.setFilters(new InputFilter[]{filter5});
et_treatedv_by_percentage.setFilters(new InputFilter[]{filter5});
sp_tank.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void
onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position){
case 0:
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.VISIBLE);
tv_treated_height.setVisibility(View.VISIBLE);
tv_treated_volume.setVisibility(View.VISIBLE);
sp_unit.setVisibility(View.GONE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.GONE);
break;
case 1:
sp_unit.setAdapter( adapter1);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.VISIBLE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 2:
sp_unit.setAdapter(adapter1);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.VISIBLE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 3:
sp_unit.setAdapter(adapter1);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.VISIBLE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 4:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.VISIBLE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
case 5:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.VISIBLE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
case 6:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.VISIBLE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
case 7:
sp_unit.setAdapter(adapter1);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.VISIBLE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 8:
sp_unit.setAdapter(adapter1);
tv_raw_raduis.setVisibility(View.VISIBLE);
tv_raw_height.setVisibility(View.VISIBLE);
tv_raw_volume.setVisibility(View.VISIBLE);
tv_treated_raduis.setVisibility(View.GONE);
tv_treated_height.setVisibility(View.GONE);
tv_treated_volume.setVisibility(View.GONE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.VISIBLE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 9:
sp_unit.setAdapter(adapter1);
tv_raw_raduis.setVisibility(View.GONE);
tv_raw_height.setVisibility(View.GONE);
tv_raw_volume.setVisibility(View.GONE);
tv_treated_raduis.setVisibility(View.VISIBLE);
tv_treated_height.setVisibility(View.VISIBLE);
tv_treated_volume.setVisibility(View.VISIBLE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.VISIBLE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.VISIBLE);
tv_volume_result.setVisibility(View.GONE);
break;
case 10:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.GONE);
tv_raw_height.setVisibility(View.GONE);
tv_raw_volume.setVisibility(View.GONE);
tv_treated_raduis.setVisibility(View.VISIBLE);
tv_treated_height.setVisibility(View.VISIBLE);
tv_treated_volume.setVisibility(View.VISIBLE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.VISIBLE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
case 11:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.GONE);
tv_raw_height.setVisibility(View.GONE);
tv_raw_volume.setVisibility(View.GONE);
tv_treated_raduis.setVisibility(View.VISIBLE);
tv_treated_height.setVisibility(View.VISIBLE);
tv_treated_volume.setVisibility(View.VISIBLE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.VISIBLE);
et_treatedv_by_m.setVisibility(View.GONE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
case 12:
sp_unit.setAdapter(adapter2);
tv_raw_raduis.setVisibility(View.GONE);
tv_raw_height.setVisibility(View.GONE);
tv_raw_volume.setVisibility(View.GONE);
tv_treated_raduis.setVisibility(View.VISIBLE);
tv_treated_height.setVisibility(View.VISIBLE);
tv_treated_volume.setVisibility(View.VISIBLE);
sp_unit.setVisibility(View.VISIBLE);
et_rawl_by_percentage.setVisibility(View.GONE);
et_rawl_by_mm.setVisibility(View.GONE);
et_rawl_by_m.setVisibility(View.GONE);
et_rawv_by_percentage.setVisibility(View.GONE);
et_rawv_by_mm.setVisibility(View.GONE);
et_rawv_by_m.setVisibility(View.GONE);
et_treatedl_by_percentage.setVisibility(View.GONE);
et_treatedl_by_mm.setVisibility(View.GONE);
et_treatedl_by_m.setVisibility(View.GONE);
et_treatedv_by_percentage.setVisibility(View.GONE);
et_treatedv_by_mm.setVisibility(View.GONE);
et_treatedv_by_m.setVisibility(View.VISIBLE);
tv_level_result.setVisibility(View.GONE);
tv_volume_result.setVisibility(View.VISIBLE);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
btn_calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int index = sp_tank.getSelectedItemPosition();
int list = sp_unit.getSelectedItemPosition();
double rawl_by_percentage = Double.parseDouble(et_rawl_by_percentage.getText().toString());
double rawl_by_mm = Double.parseDouble(et_rawl_by_mm.getText().toString());
if (index == 1 && list == 1) {
level = rawl_by_percentage;
} else if (index == 2 && list == 2) {
level = rawl_by_mm;
}
tv_level_result.setText(level + "");
}
});
}
}
New contributor
user25031069 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.