java - 多个编辑文本验证该字段是否包含在保存按钮中具有可见性的数据
问题描述
我已经阅读了很多帖子并提出了所有建议,但没有一个有效。首先将按钮的视图将其setVisibility 保存到GONE 的xml 中。
这是完整的课程:
public class AdminAddCar extends AppCompatActivity {
@BindView(R.id.image_add_admin_layout)
ImageView imageAddAdminLayout;
@BindView(R.id.add_car_photo_admin)
ImageButton addCarPhotoAdmin;
@BindView(R.id.ed_marca)
EditText edMarca;
@BindView(R.id.ed_chasis)
EditText edChasis;
@BindView(R.id.ed_color)
EditText edColor;
@BindView(R.id.ed_kilometraje)
EditText edKilometraje;
@BindView(R.id.ed_modelo)
EditText edModelo;
@BindView(R.id.ed_motor)
EditText edMotor;
@BindView(R.id.ed_placa)
EditText edPlaca;
@BindView(R.id.ed_precio)
EditText edPrecio;
@BindView(R.id.ed_referencia)
EditText edReferencia;
@BindView(R.id.ed_sucursal)
EditText edSucursal;
String uId;
String image;
String marca;
String chasis;
String color;
String kilometraje;
String modelo;
String placa;
String motor;
String precio;
String referencia;
String sucursal;
FirebaseStorage firebaseStorage;
StorageReference storageReference;
DatabaseReference databaseReference;
private static final int RC_PHOTO_PICKER = 2;
@BindView(R.id.adm_boton_guardar)
Button admBotonGuardar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.admin_add_layout);
ButterKnife.bind(this);
/**
* Implement the photo picker
*/
databaseReference = FirebaseDatabase.getInstance().getReference("Automoviles");
firebaseStorage = FirebaseStorage.getInstance();
storageReference = firebaseStorage.getReference().child("carUploads");
addCarPhotoAdmin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO: Fire an intent to show an image picker
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
}
});
admBotonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GuardarAutomoviles();
finish();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
Log.i("ImageUri", "This is the ImageUri ----------------------->:" + selectedImageUri);
final StorageReference photoRef = storageReference.child(selectedImageUri.getLastPathSegment());
photoRef.putFile(selectedImageUri).addOnSuccessListener(
this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
while (!urlTask.isSuccessful()) ;
final Uri downloadUrl = urlTask.getResult();
image =downloadUrl.toString();
Log.i("TAG","This is the image:---->"+image);
}
});
}
}
public void GuardarAutomoviles() {
// if(image!=null) {
String objMarca = edMarca.getText().toString().trim();
int objChasis = Integer.parseInt(edChasis.getText().toString().trim());
String objColor = edColor.getText().toString().trim();
int objKilometraje = Integer.parseInt(edKilometraje.getText().toString().trim());
int objModelo = Integer.parseInt(edModelo.getText().toString().trim());
String objPlaca = edPlaca.getText().toString().trim();
String objMotor = edMotor.getText().toString().trim();
int objPrecio = Integer.parseInt(edPrecio.getText().toString().trim());
String objReferencia = edReferencia.getText().toString().trim();
String objSucursal = edSucursal.getText().toString().trim();
edMarca.addTextChangedListener(adminTextwatcher);
edChasis.addTextChangedListener(adminTextwatcher);
edColor.addTextChangedListener(adminTextwatcher);
edKilometraje.addTextChangedListener(adminTextwatcher);
edModelo.addTextChangedListener(adminTextwatcher);
edPlaca.addTextChangedListener(adminTextwatcher);
edMotor.addTextChangedListener(adminTextwatcher);
edPrecio.addTextChangedListener(adminTextwatcher);
edReferencia.addTextChangedListener(adminTextwatcher);
edSucursal.addTextChangedListener(adminTextwatcher);
Automoviles autosAdmin = new Automoviles(objMarca, objPlaca, objReferencia, objColor, image,
objModelo, objPrecio, objChasis, objKilometraje, objMotor, objSucursal);
databaseReference.push().setValue(autosAdmin);
String key = databaseReference.getKey();
Toast.makeText(this, "save ok", Toast.LENGTH_SHORT).show();
}
private TextWatcher adminTextwatcher=new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
marca = edMarca.getText().toString().trim();
chasis = edChasis.getText().toString().trim();
color = edColor.getText().toString().trim();
kilometraje = edKilometraje.getText().toString().trim();
modelo = edModelo.getText().toString().trim();
placa = edPlaca.getText().toString().trim();
motor = edMotor.getText().toString().trim();
precio = edPrecio.getText().toString().trim();
referencia = edReferencia.getText().toString().trim();
sucursal = edSucursal.getText().toString().trim();
if(!chasis.matches("")
&&!chasis.matches("")
&&!color.matches("")
&&!kilometraje.matches("")
&&!modelo.matches("")
&&!placa.matches("")
&&!motor.matches("")
&&!precio.matches("")
&&!referencia.matches("")
&&!sucursal.matches("")){
admBotonGuardar.setVisibility(View.VISIBLE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
};
}
当我模拟应用程序时,保存按钮消失了,但是当我填写 editText 字段时,它应该出现的按钮!但这只是没有发生!
这是更新的代码:
public void GuardarAutomoviles() {
// if(image!=null) {
String objMarca = edMarca.getText().toString().trim();
int objChasis = Integer.parseInt(edChasis.getText().toString().trim());
String objColor = edColor.getText().toString().trim();
int objKilometraje = Integer.parseInt(edKilometraje.getText().toString().trim());
int objModelo = Integer.parseInt(edModelo.getText().toString().trim());
String objPlaca = edPlaca.getText().toString().trim();
String objMotor = edMotor.getText().toString().trim();
int objPrecio = Integer.parseInt(edPrecio.getText().toString().trim());
String objReferencia = edReferencia.getText().toString().trim();
String objSucursal = edSucursal.getText().toString().trim();
edMarca.addTextChangedListener(adminTextwatcher);
edChasis.addTextChangedListener(adminTextwatcher);
edColor.addTextChangedListener(adminTextwatcher);
edKilometraje.addTextChangedListener(adminTextwatcher);
edModelo.addTextChangedListener(adminTextwatcher);
edPlaca.addTextChangedListener(adminTextwatcher);
edMotor.addTextChangedListener(adminTextwatcher);
edPrecio.addTextChangedListener(adminTextwatcher);
edReferencia.addTextChangedListener(adminTextwatcher);
edSucursal.addTextChangedListener(adminTextwatcher);
if (!chasis.isEmpty()
|| !color.isEmpty()
|| !kilometraje.isEmpty()
|| !modelo.isEmpty()
|| !placa.isEmpty()
|| !motor.isEmpty()
||!precio.isEmpty()
|| !referencia.isEmpty()
|| !sucursal.isEmpty()) {
admBotonGuardar.setVisibility(View.VISIBLE);
}
marca = edMarca.getText().toString().trim();
chasis = edChasis.getText().toString().trim();
color = edColor.getText().toString().trim();
kilometraje = edKilometraje.getText().toString().trim();
modelo = edModelo.getText().toString().trim();
placa = edPlaca.getText().toString().trim();
motor = edMotor.getText().toString().trim();
precio = edPrecio.getText().toString().trim();
referencia = edReferencia.getText().toString().trim();
sucursal = edSucursal.getText().toString().trim();
Automoviles autosAdmin = new Automoviles(objMarca, objPlaca, objReferencia, objColor, image,
objModelo, objPrecio, objChasis, objKilometraje, objMotor, objSucursal);
databaseReference.push().setValue(autosAdmin);
String key = databaseReference.getKey();
Toast.makeText(this, "save ok", Toast.LENGTH_SHORT).show();
}
解决方案
您正在检查matches()
哪个是错误的。您应该检查字符串对象.isEmpty()
或者你也可以使用TextUtils.isEmpty(string)
推荐阅读
- c# - 使用 WFSRegister 注册后,在我的应用程序中未收到 XFS 事件 [Windows 消息] (SERVICE_EVENTS,EXECUTE_EVENTS)
- angular - 对于使用 Angular SPA 获取的 Active Directory B2C JWT 令牌,acr 声明为空
- typescript - @Watch & $Refs 与 typescript 和 vue-property-decorator
- mapbox - Mapbox 是否托管 mapbox-gl-opacity 插件?
- nginx - Nginx 不会让 med 添加任何其他站点
- css - 向 Angular 项目添加新字体
- java - 使用反射更改最终变量,或在代码中设置它之前更改它调用的内容
- c++builder - 可以通过将类名指定为字符串来在运行时创建控件吗?
- python - 如何从 re 模式中提取组模式?
- python - 如何在numpy python中执行以下操作