Java 如何防止我的应用程序在没有输入或输入无效时崩溃
您好,我正在创建一个单元转换器应用程序,试图自学如何制作android应用程序。当单击转换按钮时,如何让我的应用程序显示消息而不是崩溃。如果输入为nothing或“”,这里是我的代码 就个人而言,如果fromEditText中没有输入,我想禁用该按钮 XML 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
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
}