0

So i am trying to make a unit converting app and after i have succeded to convert all the units into the user inputed one i tried to repeat the process but my app crashes. Can anyone explain to me where i was wrong?

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MobileAds.initialize(this);
        mAdview = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();
        mAdview.loadAd(adRequest);
        AdView adView = new AdView(this);
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        km = findViewById(R.id.unit_km);
        mi = findViewById(R.id.unit_mile);
        m  = findViewById(R.id.unit_meters);
        ft = findViewById(R.id.unit_feet);
        yd = findViewById(R.id.unit_yard);
        cm = findViewById(R.id.unit_centimetri);
        in = findViewById(R.id.unit_inch);
        conv = findViewById(R.id.convert);
        clear = findViewById(R.id.clear);

        conv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                double value_km = Double.valueOf(km.getText().toString());
                km.setText(Double.valueOf(value_km).toString()+ " Kilometers");
                mi.setText(Double.valueOf(UnitConverter.kilometri2Mile(value_km)).toString()+" Mile");
                m.setText(Double.valueOf(UnitConverter.kilometri2Metri(value_km)).toString()+" Metri");
                ft.setText(Double.valueOf(UnitConverter.kilometri2Feet(value_km)).toString()+" Feet");
                yd.setText(Double.valueOf(UnitConverter.kilometri2Yard(value_km)).toString()+" Yarzi");
                cm.setText(Double.valueOf(UnitConverter.kilometri2Centimetri(value_km)).toString()+" Centimetri");
                in.setText(Double.valueOf(UnitConverter.kilometri2Inch(value_km)).toString()+" Inch");

                double value_mi = Double.valueOf(mi.getText().toString());
                km.setText(Double.valueOf(UnitConverter.mile2Kilometri(value_mi)).toString()+ " Kilometers");
                mi.setText(Double.valueOf(value_mi).toString()+" Mile");
                m.setText(Double.valueOf(UnitConverter.mile2Metri(value_mi)).toString()+" Metri");
                ft.setText(Double.valueOf(UnitConverter.mile2Feet(value_mi)).toString()+" Feet");
                yd.setText(Double.valueOf(UnitConverter.mile2Yarzi(value_mi)).toString()+" Yarzi");
                cm.setText(Double.valueOf(UnitConverter.mile2Centimetri(value_mi)).toString()+" Centimetri");
                in.setText(Double.valueOf(UnitConverter.mile2Inch(value_mi)).toString()+" Inch");
            }catch (Exception e){
                }
            }
        });
  • 3
    whats on the logcat? show the error – letsCode Jun 13 '18 at 13:51
  • 6
    oh, come on : `catch (Exception e) { }` :( never do this ! how you wanna know what is wrong if you have this in your code ) – ikos23 Jun 13 '18 at 13:52
  • catch (Exception e){ } and you wonder why you don't know what's going wrong? – Stultuske Jun 13 '18 at 13:56
  • Repeat the process how? clicking the button twice? Then the issue probably comes from the Double.valueOf(km.getText().toString()); line. The second time the field has the text "kilometers" (XX kilometers), so it can't be parsed to a Double. Just check the logcat. – giroxiii Jun 13 '18 at 14:34
  • thx guys i have used some if/else and it seems to work. The only thing is that if it would work the same with a text watcher it would be great :P. Thx for replies i have learned my lesson :) – Andrei Sandu Jun 14 '18 at 17:20

0 Answers0