Java 如何防止我的应用程序在没有输入或输入无效时崩溃

Java 如何防止我的应用程序在没有输入或输入无效时崩溃,java,android,xml,Java,Android,Xml,您好,我正在创建一个单元转换器应用程序,试图自学如何制作android应用程序。当单击转换按钮时,如何让我的应用程序显示消息而不是崩溃。如果输入为nothing或“”,这里是我的代码 就个人而言,如果fromEditText中没有输入,我想禁用该按钮 XML Java主活动类 package com.appcreator.isa.theunitconverterapp; import android.content.Intent; import android.support.v7.app

您好,我正在创建一个单元转换器应用程序,试图自学如何制作android应用程序。当单击转换按钮时,如何让我的应用程序显示消息而不是崩溃。如果输入为nothing或“”,这里是我的代码

就个人而言,如果fromEditText中没有输入,我想禁用该按钮

XML

Java主活动类

package com.appcreator.isa.theunitconverterapp;

 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.View;
 import android.widget.ArrayAdapter;
 import android.widget.EditText;
 import android.widget.Spinner;
 import android.widget.Toast;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
 import android.graphics.Color;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.view.Menu;

public class MainActivity extends AppCompatActivity
 {

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.unitsdistance, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    Spinner from = (Spinner)findViewById(R.id.spinner_from);
    Spinner to = (Spinner)findViewById(R.id.spinner_to);

    from.setAdapter(adapter);
    to.setAdapter(adapter);
    //setContentView(R.layout.activity_main);

}
public void convert(View view)
{
    Spinner fromSpinner, toSpinner;
    final EditText fromEditText, toEditText;

    fromSpinner = (Spinner) findViewById(R.id.spinner_from);
    toSpinner = (Spinner) findViewById(R.id.spinner_to);
    fromEditText = (EditText) findViewById(R.id.editText_from);
    toEditText = (EditText) findViewById(R.id.editText_to);

    // Get the string from the Spinners and number from the EditText
    String fromString = (String) fromSpinner.getSelectedItem();
    String toString = (String) toSpinner.getSelectedItem();
    double input = Double.valueOf(fromEditText.getText().toString());

    Button check =  (Button) findViewById(R.id.button_convert);




    // Convert the strings to something in our Unit enu,
    Converter.UnitsDistance fromUnit = Converter.UnitsDistance.fromString(fromString);
    Converter.UnitsDistance toUnit = Converter.UnitsDistance.fromString(toString);

    // Create a converter object and convert!
    Converter converter = new Converter(fromUnit, toUnit);

    double result = converter.convert(input);

    check.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            if (fromEditText.getText().toString().length() == 0 || fromEditText.getText().toString() == ".")
            {
                //Toast.makeText(MainActivity.this, "Input is invalid", Toast.LENGTH_SHORT).show();
                Intent intent = getIntent();
                finish();
                startActivity(intent);
            }
        }
      });

     toEditText.setText(String.valueOf(result));
   }
  }
package com.appcreator.isa.theunitconverterapp;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.text.Editable;
导入android.text.TextUtils;
导入android.text.TextWatcher;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.OutputStreamWriter;
导入android.graphics.Color;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.view.Menu;
公共类MainActivity扩展了AppCompatActivity
{
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.unitsdistance,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
微调器from=(微调器)findViewById(R.id.Spinner\u from);
微调器到=(微调器)findViewById(R.id.Spinner\u到);
from.setAdapter(适配器);
to.setAdapter(适配器);
//setContentView(R.layout.activity_main);
}
公共void转换(视图)
{
旋转器从旋转器到旋转器;
最终编辑文本从编辑文本到编辑文本;
fromSpinner=(Spinner)findViewById(R.id.Spinner\u from);
toSpinner=(微调器)findViewById(R.id.Spinner\u to);
fromEditText=(EditText)findViewById(R.id.EditText\u from);
toEditText=(EditText)findViewById(R.id.EditText\u to);
//从微调器获取字符串,从EditText获取数字
String fromString=(String)fromSpinner.getSelectedItem();
String toString=(String)toSpinner.getSelectedItem();
double input=double.valueOf(fromEditText.getText().toString());
按钮检查=(按钮)findViewById(R.id.Button\u转换);
//将字符串转换为我们单元中的内容,
Converter.UnitsDistance fromUnit=Converter.UnitsDistance.fromString(fromString);
Converter.UnitsDistance toUnit=Converter.UnitsDistance.fromString(toString);
//创建一个转换器对象并转换!
转换器=新转换器(从单元到单元);
双结果=转换器。转换(输入);
check.setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
if(fromEditText.getText().toString().length()==0 | | fromEditText.getText().toString()==”)
{
//Toast.makeText(MainActivity.this,“输入无效”,Toast.LENGTH_SHORT.show();
Intent=getIntent();
完成();
星触觉(意向);
}
}
});
toEditText.setText(String.valueOf(result));
}
}
strings.xml

<resources>
<string name="app_name">The Unit Converter App</string>
<string-array name="unitsdistance">
    <item>Inch</item>
    <item>Centimetre</item>
    <item>Foot</item>
    <item>Yard</item>
    <item>Metre</item>
    <item>Mile</item>
    <item>Kilometre</item>
    <item>NauticalMile</item>
</string-array>
</resources>

单位转换器应用程序
英寸
厘米
脚
院子
米
英里
公里
纳提卡米尔
问题每次我点击一个按钮时,如果EditText中没有任何内容,或者如果其中只有“.”而没有数字,应用程序就会停止

更新的主要活动

    package com.appcreator.isa.theunitconverterapp;



    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.Toast;
    import android.view.View.OnClickListener;
    import android.widget.Button;


    public class MainActivity extends AppCompatActivity
   {

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.unitsdistance, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    Spinner from = (Spinner)findViewById(R.id.spinner_from);
    Spinner to = (Spinner)findViewById(R.id.spinner_to);

    from.setAdapter(adapter);
    to.setAdapter(adapter);

}
public void convert(View view)
{




    Button check =  (Button) findViewById(R.id.button_convert);




    check.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Spinner fromSpinner, toSpinner;
            EditText  toEditText;
            toEditText = (EditText) findViewById(R.id.editText_to);
            EditText fromEditText = (EditText) findViewById(R.id.editText_from);;


            fromSpinner = (Spinner) findViewById(R.id.spinner_from);
            toSpinner = (Spinner) findViewById(R.id.spinner_to);
            String fromString = (String) fromSpinner.getSelectedItem();
            String toString = (String) toSpinner.getSelectedItem();

            Converter.UnitsDistance fromUnit = Converter.UnitsDistance.fromString(fromString);
            Converter.UnitsDistance toUnit = Converter.UnitsDistance.fromString(toString);

            Converter converter = new Converter(fromUnit, toUnit);


            String str = fromEditText.getText().toString().trim();
            boolean valid = true;
            double val = 0;

            try {
                val = Double.parseDouble(str);
            }
            catch(NumberFormatException e)
            {
                valid = false;
            }

            if( valid )
            {
                // use the number
                if (fromEditText.getText().toString().trim().length() > 0 )
                {
                    double input = Double.valueOf(fromEditText.getText().toString().trim());
                    double result = converter.convert(input);
                    toEditText.setText(String.valueOf(result));
                }

            }
            else
                {
                // handle invalid entry
                    Toast.makeText(MainActivity.this, "Input is invalid", Toast.LENGTH_SHORT).show();

            }
        }
    });


     }
    }
package com.appcreator.isa.theunitconverterapp;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
导入android.view.view.OnClickListener;
导入android.widget.Button;
公共类MainActivity扩展了AppCompatActivity
{
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.unitsdistance,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
微调器from=(微调器)findViewById(R.id.Spinner\u from);
微调器到=(微调器)findViewById(R.id.Spinner\u到);
from.setAdapter(适配器);
to.setAdapter(适配器);
}
公共void转换(视图)
{
按钮检查=(按钮)findViewById(R.id.Button\u转换);
check.setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
旋转器从旋转器到旋转器;
编辑文本到编辑文本;
toEditText=(EditText)findViewById(R.id.EditText\u to);
EditText fromEditText=(EditText)findViewById(R.id.EditText_from);;
fromSpinner=(Spinner)findViewById(R.id.Spinner\u from);
toSpinner=(微调器)findViewById(R.id.Spinner\u to);
String fromString=(String)fromSpinner.getSelectedItem();
String toString=(String)toSpinner.getSelectedItem();
Converter.UnitsDistance fromUnit=Converter.UnitsDistance.fromString(fromString);
Converter.UnitsDistance toUnit=Converter.UnitsDistance.fromString(toString);
转换器=新转换器(从单元到单元);
String str=fromEditText.getText().toString().trim();
布尔有效=真;
双val=0;
试一试{
val=Double.parseDouble(str);
}
捕获(数字格式)
{
有效=错误;
}
如果(有效)
{
<resources>
<string name="app_name">The Unit Converter App</string>
<string-array name="unitsdistance">
    <item>Inch</item>
    <item>Centimetre</item>
    <item>Foot</item>
    <item>Yard</item>
    <item>Metre</item>
    <item>Mile</item>
    <item>Kilometre</item>
    <item>NauticalMile</item>
</string-array>
</resources>
    package com.appcreator.isa.theunitconverterapp;



    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.Toast;
    import android.view.View.OnClickListener;
    import android.widget.Button;


    public class MainActivity extends AppCompatActivity
   {

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.unitsdistance, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    Spinner from = (Spinner)findViewById(R.id.spinner_from);
    Spinner to = (Spinner)findViewById(R.id.spinner_to);

    from.setAdapter(adapter);
    to.setAdapter(adapter);

}
public void convert(View view)
{




    Button check =  (Button) findViewById(R.id.button_convert);




    check.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Spinner fromSpinner, toSpinner;
            EditText  toEditText;
            toEditText = (EditText) findViewById(R.id.editText_to);
            EditText fromEditText = (EditText) findViewById(R.id.editText_from);;


            fromSpinner = (Spinner) findViewById(R.id.spinner_from);
            toSpinner = (Spinner) findViewById(R.id.spinner_to);
            String fromString = (String) fromSpinner.getSelectedItem();
            String toString = (String) toSpinner.getSelectedItem();

            Converter.UnitsDistance fromUnit = Converter.UnitsDistance.fromString(fromString);
            Converter.UnitsDistance toUnit = Converter.UnitsDistance.fromString(toString);

            Converter converter = new Converter(fromUnit, toUnit);


            String str = fromEditText.getText().toString().trim();
            boolean valid = true;
            double val = 0;

            try {
                val = Double.parseDouble(str);
            }
            catch(NumberFormatException e)
            {
                valid = false;
            }

            if( valid )
            {
                // use the number
                if (fromEditText.getText().toString().trim().length() > 0 )
                {
                    double input = Double.valueOf(fromEditText.getText().toString().trim());
                    double result = converter.convert(input);
                    toEditText.setText(String.valueOf(result));
                }

            }
            else
                {
                // handle invalid entry
                    Toast.makeText(MainActivity.this, "Input is invalid", Toast.LENGTH_SHORT).show();

            }
        }
    });


     }
    }
String str = fromEditText.getText().toString().trim();
boolean valid = true;
double val = 0;

try {
    val = Double.parseDouble(str);
}
catch(NumberFormatException e) {
    valid = false;
}

if( valid ) {
    // use the number
}
else {
    // handle invalid entry
}