发布:2023/2/22 11:47:49作者:管理员 来源:本站 浏览次数:564
主要知识点:
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应用会出现“闪退”现象
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4