主要知识点:
1:如何判断EditText中有没有内容(不能用null或者0)
2:点击事件内代码的运行情况分析
3:获取空的EditText内容进行数据强制转换出现的问题
4:代码容错
package com.example.administrator.activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_a); Button btn_mul=(Button)findViewById(R.id.mul); Button btn_div=findViewById(R.id.div); btn_mul.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(isEmpty()==true){ return; }else{ Mul(); } } }); btn_div.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(isEmpty()==true){ return; }else{ Div(); } } }); Intent i=getIntent(); String op=i.getStringExtra("op"); String res=i.getStringExtra("res"); TextView Aopshow=(TextView)findViewById(R.id.Aopshow); TextView Aresshow=(TextView)findViewById(R.id.Aresshow); Aopshow.setText(op); Aresshow.setText(res); } public boolean isEmpty(){ //获取数据1的EditText EditText Ad1Show=findViewById(R.id.Ad1Show); //获取数据2的EditText EditText Ad2Show=findViewById(R.id.Ad2Show); if(TextUtils.isEmpty(Ad1Show.getText())&&TextUtils.isEmpty(Ad2Show.getText())){ Toast.makeText(MainActivity.this, "数据1,数据2为空", Toast.LENGTH_SHORT).show(); return true; }else if (TextUtils.isEmpty(Ad1Show.getText())){ Toast.makeText(MainActivity.this, "数据1为空", Toast.LENGTH_SHORT).show(); return true; }else if(TextUtils.isEmpty(Ad2Show.getText())){ Toast.makeText(MainActivity.this, "数据2为空", Toast.LENGTH_SHORT).show(); return true; } return false; } public void Div(){ Intent intent=new Intent(MainActivity.this,ActivityC.class); EditText Ad1Show=findViewById(R.id.Ad1Show); EditText Ad2Show=findViewById(R.id.Ad2Show); //获取进行运算的Button Button Aop=findViewById(R.id.div); float d1= Float.parseFloat(Ad1Show.getText().toString()); //疑问:Integer.parseInt无法计算小数 float d2= Float.parseFloat(Ad2Show.getText().toString()); if(d2==0.0){ Toast.makeText(MainActivity.this, "除数不能为0", Toast.LENGTH_SHORT).show(); Intent intent1=new Intent(MainActivity.this,ActivityB.class); startActivity(intent); MainActivity.this.finish(); } String res=d1/d2+" "; //封装数据 intent.putExtra("d1", Ad1Show.getText().toString()); intent.putExtra("d2", Ad2Show.getText().toString()); intent.putExtra("op", Aop.getText().toString()); intent.putExtra("res", res); //启动Activity B startActivity(intent); //结束MainActivity MainActivity.this.finish(); } public void Mul(){ Intent intent=new Intent(MainActivity.this,ActivityB.class); EditText Ad1Show=findViewById(R.id.Ad1Show); EditText Ad2Show=findViewById(R.id.Ad2Show); Button Aop=findViewById(R.id.mul); float d1= Float.parseFloat(Ad1Show.getText().toString()); //疑问:Integer.parseInt无法计算小数 float d2= Float.parseFloat(Ad2Show.getText().toString()); String res=d1*d2+" "; //封装数据 intent.putExtra("d1", Ad1Show.getText().toString()); intent.putExtra("d2", Ad2Show.getText().toString()); intent.putExtra("op", Aop.getText().toString()); intent.putExtra("res", res); //启动Activity B startActivity(intent); //结束MainActivity MainActivity.this.finish(); } }
运行结果:
代码容错第一种情况:(两个EditText都为空)
代码容错第二种情况:(第一个EditText为空)
代码容错第三种情况:(第二个EditText为空)
知识点理解:
1:判断EditText中有没有内容应使用:TextUtils.isEmpty(EditText名称.getText())
2:一个点击事件发生后,其点击事件内的代码将全部运行,其带来的坏处就是,我们无法控制代码的“走”与“停”。比如我们希望先进行某个判断再运行接下来的代码,这个时候点击事件内的代码块就无法进行“刹车”,从而出现一些不好的情况。我的解决方法是将点击事件中的代码分别写成两个方法,一个判断,一个运算,这样就可以根据判断结果来决定是否进行计算
例:
btn_mul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isEmpty()==true){
return;
}else{
Mul();
}
}
});
3:获取空的EditText内容进行数据强制转换 例如: float d1= Float.parseFloat(Ad1Show.getText().toString()); 若此时的EditText为空,则andrioid应用会出现“闪退”现象