8000 Fix bug in WeekView class due to not set viewId to child view. · githubzhaoliang/Material@d427398 · GitHub
[go: up one dir, main page]

Skip to content

Commit d427398

Browse files
committed
Fix bug in WeekView class due to not set viewId to child view.
1 parent f565b46 commit d427398

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

app/src/main/java/com/rey/material/app/RecurringPickerDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ protected void onCreate() {
9696
mEndNumEditText = (EditText)v.findViewById(R.id.rd_et_end_num);
9797
mEndNumUnitTextView = (TextView)v.findViewById(R.id.rd_tv_end_num_unit);
9898
mEndDateButton = (Button)v.findViewById(R.id.rd_bt_end_date);
99-
mWeekView = (WeekView)v.findViewById(R.id.rd_week_wv);
99+
mWeekView = (WeekView)v.findViewById(R.id.rd_wv_week);
100100

101101
mHeaderBackground = new HeaderDrawable(getContext());
102102

app/src/main/java/com/rey/material/app/WeekView.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import android.view.View;
1414
import android.widget.FrameLayout;
1515

16+
import com.rey.material.demo.R;
1617
import com.rey.material.util.ThemeUtil;
18+
import com.rey.material.util.ViewUtil;
1719
import com.rey.material.widget.CircleCheckedTextView;
1820

1921
import java.util.Calendar;
@@ -125,6 +127,7 @@ private void init(Context context, AttributeSet attrs, int defStyleAttr, int def
125127
view.setPadding(0, 0, 0, 0);
126128
view.setBackgroundColor(color);
127129
view.setAnimDuration(animDuration);
130+
view.setId(ViewUtil.generateViewId());
128131

129132
if(i == 0) {
130133
mOriginalTextSize = view.getTextSize();
@@ -274,9 +277,13 @@ protected Parcelable onSaveInstanceState() {
274277
Parcelable superState = super.onSaveInstanceState();
275278

276279
SavedState ss = new SavedState(superState);
277-
278-
for(int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++)
279-
ss.selected[i - 1] = isSelected(i);
280+
ss.selected = 0;
281+
int mask = 1;
282+
for(int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) {
283+
if(isSelected(i))
284+
ss.selected += mask;
285+
mask <<= 1;
286+
}
280287

281288
return ss;
282289
}
@@ -286,14 +293,18 @@ protected void onRestoreInstanceState(Parcelable state) {
286293
SavedState ss = (SavedState) state;
287294

288295
super.onRestoreInstanceState(ss.getSuperState());
289-
for(int i = 0; i < ss.selected.length; i++)
290-
setSelected(i + 1, ss.selected[i], true);
296+
297+
int val = ss.selected;
298+
for(int i = 0; i < 7; i++){
299+
setSelected(i + 1, val % 2 == 1, true);
300+
val >>= 1;
301+
}
291302

292303
requestLayout();
293304
}
294305

295306
static class SavedState extends BaseSavedState {
296-
boolean[] selected = new boolean[7];
307+
int selected;
297308

298309
/**
299310
* Constructor called from {@link WeekView#onSaveInstanceState()}
@@ -307,19 +318,21 @@ static class SavedState extends BaseSavedState {
307318
*/
308319
private SavedState(Parcel in) {
309320
super(in);
310-
in.readBooleanArray(selected);
321+
selected = in.readInt();
311322
}
312323

313324
@Override
314325
public void writeToParcel(@NonNull Parcel out, int flags) {
315326
super.writeToParcel(out, flags);
316-
out.writeBooleanArray(selected);
327+
out.writeInt(selected);
317328
}
318329

319330
@Override
320331
public String toString() {
321332
return "WeekView.SavedState{"
322-
+ Integer.toHexString(System.identityHashCode(this)) + "}";
333+
+ Integer.toHexString(System.identityHashCode(this))
334+
+ ";selected=" + selected
335+
+ "}";
323336
}
324337

325338
public static final Creator<SavedState> CREATOR

app/src/main/res/layout/dialog_recurring.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
</LinearLayout>
8181

8282
<com.rey.material.app.WeekView
83-
android:id="@+id/rd_week_wv"
83+
android:id="@+id/rd_wv_week"
8484
android:layout_width="match_parent"
8585
android:layout_height="wrap_content"
8686
android:textAppearance="@style/TextAppearance.AppCompat.Body1"

app/src/main/res/layout/fragment_switches.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,15 @@
101101

102102
<com.rey.material.widget.Switch
103103
style="@style/Material.Widget.Switch"
104+
android:id="@+id/switches_sw1"
104105
android:layout_width="64dp"
105106
android:layout_height="wrap_content"
106107
android:gravity="center"
107108
android:checked="false"/>
108109

109110
<com.rey.material.widget.Switch
110111
style="@style/Material.Widget.Switch"
112+
android:id="@+id/switches_sw2"
111113
android:layout_width="64dp"
112114
android:layout_height="wrap_content"
113115
android:gravity="center"

0 commit comments

Comments
 (0)
0