首页 > 代码库 > HackNine 避免在EditText中验证日期

HackNine 避免在EditText中验证日期

1.概要:

   为什么不直接为EditTText设置一个点击监听器,而非要使用Button呢?
    答案是:使用Button更安全,因为用户无法修改Button的文本内容。如果使用EditText,并且只设置了点击监听器,用户可以通过光标获取该
    控件的焦点,这样便可以绕过DatePicker控件直接修改EditText的文本内容
2.实现思路:
    将Button的背景设置成EditText的背景,在点击后弹去DatePicker控件,选定好时间后修改BUutton的text
3.效果图:
  
4.代码:
 1 public class MainActivity extends Activity { 2  3     private Button btn; 4     private int year; 5     private int month; 6     private int day; 7     private DatePickerDialog datePickDialog; 8  9     @Override10     protected void onCreate(Bundle savedInstanceState) {11         super.onCreate(savedInstanceState);12         setContentView(R.layout.activity_main);13         btn = (Button) findViewById(R.id.btn);14         Calendar calendar = Calendar.getInstance();15         year = calendar.get(Calendar.YEAR);16         month = calendar.get(Calendar.MONTH);17         day = calendar.get(Calendar.DAY_OF_MONTH);18         datePickDialog = new DatePickerDialog(MainActivity.this,19                 new OnDateSetListener() {20 21                     @Override22                     public void onDateSet(DatePicker view, int year,23                             int monthOfYear, int dayOfMonth) {24                         btn.setText(year + "/" + monthOfYear + "/" + dayOfMonth);25                     }26                 }, year, month, day);27 28         btn.setOnClickListener(new OnClickListener() {29 30             @Override31             public void onClick(View v) {32                 datePickDialog.show();33             }34         });35     }36 37 }
activity_main.xml
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:orientation="vertical" 6     tools:context=".MainActivity" > 7  8     <Button 9         android:id="@+id/btn"10         android:layout_width="match_parent"11         android:layout_height="wrap_content"12         android:background="@android:drawable/edit_text" />13 14 </LinearLayout>

 

 

HackNine 避免在EditText中验证日期