10feetPole
10feetPole

Reputation: 1

how to take default value of an edittext as 0?

I am trying to make a simple android app in which 2 text fields are there.input range is 0 to 15. If the number is in range than addition is performed.

i have implemented input varification so now if the edit text is empty it shows empty field warning. but calculation is not done. what i want is if the field is empty is should show the error but also do the addition by take default value as 0.

here is my code

public class MainActivity extends AppCompatActivity {


private EditText check,check2;
private TextView textView;
private TextInputLayout checkLay,checkLay2;
private Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initializeWidgets();

    initializeListeners();
}

private void initializeWidgets(){

    check=findViewById(R.id.check);
    check2=findViewById(R.id.check2);
    checkLay2=findViewById(R.id.checkLay2);
    checkLay=findViewById(R.id.checkLay);
    button=findViewById(R.id.button);
    textView=findViewById(R.id.textView);

}

private void initializeListeners() {

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signUp();
        }
    });
}
private void signUp(){

    boolean isVailed=true;

    int a1,a2;

    String one=check.getText().toString();
    String two=check2.getText().toString();

    if(one.isEmpty()){

        checkLay.setError("YOu need to enter something");
        isVailed=false;
    }
    else {
        if (one.length() > 0)
        {

            a1=Integer.parseInt(one);
            if(a1> 15){
                checkLay.setError("quiz marks must be less than 15");
                isVailed=false;

            }


            else  if(a1 <=15)
            {

                checkLay.setErrorEnabled(false);
                isVailed=true;
            }

        }

    }
    if(two.isEmpty()){

        checkLay2.setError("You need to enter something");
        isVailed=false;
    }
    else{
        if (two.length() > 0)
        {

            a2=Integer.parseInt(two);
            if(a2 > 15)
            { checkLay2.setError("quiz marks must be less than 15");
                isVailed=false;
            }

            else
            if(a2 <=15)
            {
                checkLay2.setErrorEnabled(false);
                isVailed=true;
            }
        }

        if(isVailed)
        {
            int total;
            a1=Integer.parseInt(one);
            a2=Integer.parseInt(two);
            total=a1+a2;
            textView.setText(String.valueOf(total));
        }

    }

Upvotes: 0

Views: 911

Answers (4)

Sam
Sam

Reputation: 3155

You can create a convenience method to get value from your edittext. The following code will return 0 if edittext is empty else the value from the edittext

private int getIntFromEditText(EditText editText) {
  return editText.getText().length()>0 ? Integer.parseInt(editText.getText().toString()):0;
}

Call it by passing EditText as a parameter, e-g

a1=getIntFromEditText(check)

Upvotes: 0

JNI_OnLoad
JNI_OnLoad

Reputation: 5442

add this line in your initializeWidgets function

yourEditText.setText(0);

follow link for more help: duplicate

Upvotes: 0

Pixels
Pixels

Reputation: 63

I would do it differently but for your specific question

if(one.isEmpty()){

    checkLay.setError("YOu need to enter something");
    isVailed=false;
}

Change to

if(one.isEmpty()){

    checkLay.setError("YOu need to enter something");
    a1=0;
}

Same for the two.isEmpty()

Upvotes: 1

Psytho
Psytho

Reputation: 3384

If a field is empty you set isVailed to false and thus say not to add the numbers. Instead you want to set the corresponding number to zero and let isVailed be true:

if(one.isEmpty()){

    checkLay.setError("YOu need to enter something");
    a1 = 0;
}

and

if(two.isEmpty()){

    checkLay2.setError("You need to enter something");
    a2 = 0;
}

Also throw off the lines

    a1=Integer.parseInt(one);
    a2=Integer.parseInt(two);

You already convert inputs to a1 and a2 earlier.


A piece of advice: you have doubled code. It's better to use functions for such pieces of codes.

Upvotes: 0

Related Questions