如何在开放活动时限制时间选择器?

时间:2018-03-02 07:46:10

标签: android

当我打开活动时,直接时间选择器正在打开,但我不想要这个。所以我在布局android:focusable="false"中添加了这一行。现在时间选择器在打开活动时没有打开。

我的要求是,在用户提交详细信息的活动中,我做了一些验证,如果用户没有从时间选择器中选择时间,我必须立即打开时间选择器。但它没有打开,因为我将edittext focusable属性设为false。

我如何达到我的要求?

任何帮助将不胜感激。帮助我。

2 个答案:

答案 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();
    }
}