-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDateEditTextView.java
More file actions
156 lines (135 loc) · 4.4 KB
/
Copy pathDateEditTextView.java
File metadata and controls
156 lines (135 loc) · 4.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.example.eliavmenachi.myapplication;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import java.util.Calendar;
import java.util.Date;
/**
* Created by menachi on 02/05/2018.
*/
interface DateEditTextViewDialogListener{
void onDateSet(int y, int m, int d);
}
public class DateEditTextView extends EditText implements DateEditTextViewDialogListener {
int year = 0;
int day;
int month;
public DateEditTextView(Context context) {
super(context);
init();
}
public DateEditTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public DateEditTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init(){
Date now = new Date();
Calendar cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
setText("" + day + "/" + (month) + "/" + year);
}
@Override
public void createContextMenu(ContextMenu menu) {
super.createContextMenu(menu);
}
@Override
public void onRestoreInstanceState(Parcelable state) {
super.onRestoreInstanceState(state);
String txt = getText().toString();
String[] strs = txt.split("/");
if (strs.length == 3) {
year = Integer.valueOf(strs[2]);
day = Integer.valueOf(strs[0]);
month = Integer.valueOf(strs[1]);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
Log.d("TAG" , "ACTION_DOWN");
TestDialog d = new TestDialog();
d.viewId = getId();
d.set(year,month -1,day);
d.show(((Activity)getContext()).getFragmentManager(),"");
return true;
}
return super.onTouchEvent(event);
}
@Override
public void onDateSet(int y, int m, int d) {
year = y;
day = d;
month = m + 1;
setText("" + day + "/" + (month) + "/" + year);
}
@SuppressLint("ValidFragment")
static class TestDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener{
int year;
int day;
int month;
int viewId =0 ;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("viewId",viewId);
}
@Override
public void dismissAllowingStateLoss() {
super.dismissAllowingStateLoss();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
void set(int y, int m, int d){
year = y;
day = d;
month = m;
}
DateEditTextViewDialogListener listener;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
if (savedInstanceState != null) {
int temp = savedInstanceState.getInt("viewId");
if (viewId == 0 && temp > 0){
viewId = savedInstanceState.getInt("viewId");
}
}
if (listener == null && viewId != 0){
View v = getActivity().findViewById(viewId);
if (v instanceof DateEditTextViewDialogListener){
listener = (DateEditTextViewDialogListener)v;
}
}
Dialog dialog = new DatePickerDialog(getActivity(),this,year,month,day);
return dialog;
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
if (listener!= null){
listener.onDateSet(i,i1,i2);
}
}
}
}