Skip to content

Commit 11169ce

Browse files
ymarianpekingme
authored andcommitted
[TimePicker] Fixed issues when re using dialog instance
Resolves #1995 PiperOrigin-RevId: 352610118
1 parent bf0d11b commit 11169ce

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

lib/java/com/google/android/material/timepicker/MaterialTimePicker.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ public final class MaterialTimePicker extends DialogFragment {
6363
private final Set<OnDismissListener> dismissListeners = new LinkedHashSet<>();
6464

6565
private TimePickerView timePickerView;
66-
private LinearLayout textInputView;
6766
private ViewStub textInputStub;
6867

6968
@Nullable private TimePickerClockPresenter timePickerClockPresenter;
@@ -262,6 +261,15 @@ public void onClick(View v) {
262261
return root;
263262
}
264263

264+
@Override
265+
public void onStop() {
266+
super.onStop();
267+
activePresenter = null;
268+
timePickerClockPresenter = null;
269+
timePickerTextInputPresenter = null;
270+
timePickerView = null;
271+
}
272+
265273
@Override
266274
public final void onCancel(@NonNull DialogInterface dialogInterface) {
267275
for (OnCancelListener listener : cancelListeners) {
@@ -275,10 +283,7 @@ public final void onDismiss(@NonNull DialogInterface dialogInterface) {
275283
for (OnDismissListener listener : dismissListeners) {
276284
listener.onDismiss(dialogInterface);
277285
}
278-
ViewGroup viewGroup = ((ViewGroup) getView());
279-
if (viewGroup != null) {
280-
viewGroup.removeAllViews();
281-
}
286+
282287
super.onDismiss(dialogInterface);
283288
}
284289

@@ -296,7 +301,6 @@ private void updateInputMode(MaterialButton modeButton) {
296301
}
297302

298303
private TimePickerPresenter initializeOrRetrieveActivePresenterForMode(int mode) {
299-
300304
if (mode == INPUT_MODE_CLOCK) {
301305
timePickerClockPresenter =
302306
timePickerClockPresenter == null
@@ -307,7 +311,7 @@ private TimePickerPresenter initializeOrRetrieveActivePresenterForMode(int mode)
307311
}
308312

309313
if (timePickerTextInputPresenter == null) {
310-
textInputView = (LinearLayout) textInputStub.inflate();
314+
LinearLayout textInputView = (LinearLayout) textInputStub.inflate();
311315
timePickerTextInputPresenter = new TimePickerTextInputPresenter(textInputView, time);
312316
}
313317

0 commit comments

Comments
 (0)