2014-02-26 144 views
1

我正在制作一个数学应用程序。我有两个数组的两个数组。我让应用程序从每个数组中选择一个随机数。该应用程序在TextView中显示两个数字。它要求用户输入一个EditText这个数字的加法是什么。然后,当用户按下“提交”时,应用程序会告诉用户他们是对还是错。检查EditText是否为空

该应用程序的工作原理,但我有一个主要问题。如果用户没有在EditText中输入任何内容并按下“提交”,则应用程序部队将关闭。我看了其他问题,询问如何检查EditText是否为空。我尝试了不同的方法,但它仍然不起作用。

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); 

} 
+0

包括从接近 – Daenyth

+0

堆栈跟踪你有没有添加了任何逻辑来检查空或空状态。发布,以及。 –

+0

没有人使用'trim()'从末端移除空格???? –

回答

0

您需要在et使用findViewById之前得到它的价值。

顺便说一下,你将bread2的值设置为0,并在下一行验证它是否为0,我想这只是一个测试,不是吗?

@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); 

     //... 

希望它有帮助!

1

不知道我在正确认识你,但它应该是很容易的:

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 
} 

这应该所有点击监听器内进行。

0

我认为这很好的做法来检查文本长度,比如该功能可以帮助你..

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

几点考虑:

  • 你在STARTB设置OnClickListener两次,这只是一个错字吗?
  • 在第二的onClick()
  • ,你有一个条件:

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

这个条件总是满足,是你想要的吗?

  • 您可以检查是否有什么使用输入下列要求:

    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 
    } 
    
0
if (et.getText().length == 0 || et.gettext == null){ 
     // do nothing 
    } else { 
     // do whatever here 
    } 

这应该工作正常

+0

你应该首先检查** null **否则你会得到一个NPE。 – CSchulz