隐藏

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

发布:2023/2/22 11:47:49作者:管理员 来源:本站 浏览次数:314

主要知识点:

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应用会出现“闪退”现象