1

这是我的代码,我不知道我做错了什么。但它不起作用!理想情况下,我想要的是如果所有文本视图都是空的,它应该“请填写详细信息”或“保存”,但它总是如何“保存”

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

EditText et1;
EditText et2;
EditText et3;
EditText et4;
EditText et5;
Button b;

FileOutputStream fos1;
FileOutputStream fos2;
FileOutputStream fos3;
FileOutputStream fos4;


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

    et1=(EditText) findViewById(R.id.editText1);
    et2=(EditText) findViewById(R.id.editText2);
    et3=(EditText) findViewById(R.id.editText3);
    et4=(EditText) findViewById(R.id.editText4);
    et5=(EditText) findViewById(R.id.editText5);

    b=(Button) findViewById(R.id.button1);


    b.setOnClickListener(this); 
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    String password=et1.getText().toString();
    String confirmPassword=et2.getText().toString();
    String secQues=et3.getText().toString();
    String secAns=et4.getText().toString();
    String hint=et5.getText().toString();


    if(password!=null && confirmPassword!=null && secQues!=null && secAns!=null && hint!=null)
    {
        Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
    }
    else
    {
        Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show();
    }
}

}
4

1 回答 1

1

字符串将始终不是null,因为它们是由 EditTexts 生成的。但是,您获得的 String 可以是""长度为 0 的空 String ( )。这意味着您应该改为比较 String 的长度。TextUtils 在这里会更好地工作

if(!TextUtils.isEmpty(password) && !TextUtils.isEmpty(confirmPassword)  && !TextUtils.isEmpty(secQues)   && !TextUtils.isEmpty(secAns)  && !TextUtils.isEmpty(hint)){
  Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
}

此外,由于您有很多EditTexts,更好的检查方法是制作一个 EditTexts 数组,然后循环并检查长度。如果发现任何空内容,请将布尔标志设置为 false 并退出循环。

boolean noneEmpty = true;

for (int x =0; x < editTextArray.length;x++)
{
  if (TextUtils.isEmpty(editTextArray[x].getText()))
  {
    noneEmpty = false;
    break;
  }
}

if(noneEmpty){
  Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
}
else{
  Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show();
}  
于 2013-03-14T18:37:40.073 回答