Android studio 中Activity以及EditText的一些用法和问题

主要知识点:
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应用会出现“闪退”现象