当我打开活动时,直接时间选择器正在打开,但我不想要这个。所以我在布局android:focusable="false"
中添加了这一行。现在时间选择器在打开活动时没有打开。
我的要求是,在用户提交详细信息的活动中,我做了一些验证,如果用户没有从时间选择器中选择时间,我必须立即打开时间选择器。但它没有打开,因为我将edittext focusable属性设为false。
我如何达到我的要求?
任何帮助将不胜感激。帮助我。
答案 0 :(得分:0)
您可能正在寻找TextWatcher
要遵循的步骤
您的详细信息
detail.addTextChangedListener(detailWatcher);
然后创建一个名为detailWatcher
private final TextWatcher detailWatcher= new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Comprobations
}
public void afterTextChanged(Editable s) {
//Comprobations
}
};
要更好地了解.gif
,请参阅此answer
然后,当您的详细信息没问题时,您可以显示timePicker
答案 1 :(得分:0)
这段代码对我有用。将Onclicklistner设置为按钮,并使用if语句检查编辑文本是否为空。如果编辑文本为空,请调用BirthDayPick()方法。我用它来做日期选择。在您的情况下,将BirthDayPick()方法替换为您的时间选择器方法。
public class RegisterActivity extends AppCompatActivity {
int defaultBirthYear=1990, defaultBirthMonth=0, defaultBirthDay=01;
int BirthYear, BirthMonth, BirthDay;
EditText etDOB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etDOB = (EditText) findViewById(R.id.etDOB);
etDOB.setFocusable(false);
etDOB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BirthDayPick();
}
});
final Button btnRegister = (Button) findViewById(R.id.bRegister);
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (etDOB.getText().toString().length() < 1) {
Toast.makeText(this, "Date of Birth cannot be empty", Toast.LENGTH_LONG).show();
BirthDayPick();
}
else{ Register(); // your registration method.
}
}
});
}
public void BirthDayPick(){
DatePickerDialog dpd = new DatePickerDialog(RegisterActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
BirthYear = defaultBirthYear = year;
BirthMonth = defaultBirthMonth = monthOfYear;
BirthDay = defaultBirthDay = dayOfMonth;
DecimalFormat df = new DecimalFormat("00");
final EditText etDOB = (EditText) findViewById(R.id.etDOB);
etDOB.setText(year+"-"+df.format(monthOfYear+1)+"-"+df.format(dayOfMonth));
}
},defaultBirthYear,defaultBirthMonth,defaultBirthDay);
dpd.show();
}
}