AndroidUSER
AndroidUSER

Reputation: 11

Check if EditText is empty

I am making a math app. I have two arrays with two sets of numbers. I make the app choose a random number from each array. The app displays that two numbers in a TextView. It asks the user to type in a EditText what the addition of the numbers is. Then when the user presses "Submit", the app will then tell the user if they are right or wrong.

The app works, but I have one main problem. If the user does not type anything in the EditText and presses "Submit", the app force closes. I have looked at other questions asking how to check if a EditText is empty. I tried different methods but it still does not work.

public class MainActivity extends Activity {
Button submitb, startb, idkb;
EditText et;
TextView tv, rig, wron;

int arrone[] = { 24, 54, 78, 96, 48, 65, 32, 45, 95, 13, 41, 55, 33, 22,
        71, 5, 22, 17, 13, 29, 63, 72, 14, 81, 7 }; // One Set of Numbers//
int arrtwo[] = { 121, 132, 147, 79, 82, 723, 324, 751, 423, 454, 448,
        524, 512, 852, 845, 485, 775, 186, 99 }; // Another set of Numbers//
int random1, random2, add;
int wrong = 0;
int right = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    list();
    startb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int num = (int) (Math.random() * 25);
            int mun = (int) (Math.random() * 19);
            random1 = arrone[num];
            random2 = arrtwo[mun];
            String yu = (random1 + " + " + random2 + " =");
            tv.setText(yu);
            et.setHint("");
            idkb.setVisibility(0);
            startb.setText("Next Question");

        }
    });

    startb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            int bread2 = 0;
            if (bread2 == 0) {
                Toast.makeText(getApplicationContext(),
                        "You didn't answer the question!",
                        Toast.LENGTH_LONG).show();

            }

            int swag = random1 + random2;
            String bread = et.getText().toString();
            bread2 = Integer.parseInt(bread);

            if (bread2 == swag) {
                startb.setText("Next Question");
                tv.setText("Correct");
                et.setText("");
                et.setHint("Click Next Question");
                right++;
                rig.setText("Right:" + right);
                rig.setTextColor(Color.parseColor("#14df11"));
                bread2 = 0;
            }

            else if (bread2 == 0) {
                tv.setText("Wrong, the correct answer is " + swag + ".");

                startb.setText("Next Question");
                et.setText("");
                tv.setHint("Click Next Question");
                wrong++;
                wron.setText("Wrong:" + wrong);
                wron.setTextColor(Color.parseColor("#ff0000"));
                bread2 = 0;
            }

            else {
                tv.setText("Wrong, the correct answer is " + swag + ".");

                startb.setText("Next Question");
                et.setText("");
                et.setHint("Click Next Question");
                wrong++;
                wron.setText("Wrong:" + wrong);
                wron.setTextColor(Color.parseColor("#ff0000"));
                bread2 = 0;

            }

        }

    });

    idkb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int swag = random1 + random2;

            tv.setText("The Correct Answer is  " + swag + ".");

            et.setText("");
            tv.setHint("Click Next Question");
            wrong++;
            wron.setText("Wrong:" + wrong);
            wron.setTextColor(Color.parseColor("#ff0000"));

        }
    });

}

private void list() {
    submitb = (Button) findViewById(R.id.b1);
    startb = (Button) findViewById(R.id.b2);
    et = (EditText) findViewById(R.id.et1);
    tv = (TextView) findViewById(R.id.tv1);
    rig = (TextView) findViewById(R.id.rtv);
    wron = (TextView) findViewById(R.id.wtv);
    idkb = (Button) findViewById(R.id.idk);

}

Upvotes: 1

Views: 198

Answers (5)

Anas
Anas

Reputation: 350

    if (et.getText().length == 0 || et.gettext == null ){
        // do nothing
   } else {
       // do whatever here
   }

this should works fine

Upvotes: 0

Melquiades
Melquiades

Reputation: 8598

Few points to consider:

  • you are setting OnClickListener on startb twice, is it just a typo?
  • in the second onClick(), you have a condition:

    int bread2 = 0;
    if (bread2 == 0) {
        //rest of code
    }
    

This condition will ALWAYS be satisfied, is that what you want?

  • you can check if there's nothing entered by use with the following:

    String bread = et.getText().toString();
    
    // check if there is any text entered by user
    if (bread.length() > 0) {
        bread2 = Integer.parseInt(bread);
    
        if (bread2 == swag) {
            startb.setText("Next Question");
    
            //the rest of the code
    }
    

Upvotes: 2

typedef
typedef

Reputation: 937

I think it good practice to check text length, for example this function can help you..

 public boolean isEditTextEmpty(EditText input){
   if(input.getText().length() == 0)
      return true;
   else
      return false;
  }

Upvotes: 0

Eric H.
Eric H.

Reputation: 7014

Not sure I'm understanding you correctly, but it should be easy as:

et = (EditText) findViewById(R.id.et1);
String bread = et.getText().toString();
if (bread.length() == 0){
   // raise error dialogue
} else {
   // continue to check the parsed integer
}

This should all be done within your click listener.

Upvotes: 1

Giacomoni
Giacomoni

Reputation: 1468

You need to use findViewById on the et before gets its value.

By the way, you are setting bread2 value to 0, and on the next line verifying if it's 0, i suppose it's just a test, isn't it?

    @Override
    public void onClick(View v) {

        int bread2 = 0;
        if (bread2 == 0) {
            Toast.makeText(getApplicationContext(),
                    "You didn't answer the question!",
                    Toast.LENGTH_LONG).show();

        }

        int swag = random1 + random2;

        et = findViewById(R.id.yourEditText);

        String bread = et.getText().toString();
        bread2 = Integer.parseInt(bread);

        //...

Hope it helps!

Upvotes: 0

Related Questions