From e3660999bfd5533a506132e834b4d553f0267abb Mon Sep 17 00:00:00 2001 From: simonpoole Date: Sun, 17 Jul 2022 15:01:31 +0200 Subject: [PATCH] Fix fragment mode if onAttach is called before onCreateView --- CHANGELOG.txt | 3 ++ README.md | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- lib/build.gradle | 7 ++-- .../OpeningHoursFragment.java | 33 ++++++++----------- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index aaa0e54..5f3afbb 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,8 @@ Please see the github repository for a complete list of changes: https://github.com/simonpoole/OpeningHoursFragment/commits/master +0.13.2: +- Fix fragment mode if onAttach is called before onCreateView + 0.13.0: - Support running as a 1 level deep nested Fragment - Update translations diff --git a/README.md b/README.md index 3666484..bb41323 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,6 @@ repositories { ``` groovy dependencies { - compile "ch.poole:OpeningHoursFragment:0.12.0" + compile "ch.poole:OpeningHoursFragment:0.13.2" } ``` diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4d9ca16..442d913 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/lib/build.gradle b/lib/build.gradle index 1270984..574bbbd 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' apply plugin: "jacoco" -version = '0.13.0' +version = '0.13.2' def libName = "OpeningHoursFragment" task updateTranslations(type: Exec) { @@ -29,8 +29,8 @@ android { compileSdkVersion 28 defaultConfig { - minSdkVersion 14 - targetSdkVersion 28 + minSdkVersion 16 + targetSdkVersion 31 versionCode 100 versionName "${project.version}" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -100,7 +100,6 @@ dependencies { implementation "ch.poole:OpeningHoursParser:0.26.0" implementation "ch.poole.android:rangebar:0.1.6" implementation 'cn.carbswang.android:NumberPickerView:1.2.0' - implementation "com.google.code.gson:gson:2.8.5" implementation 'androidx.constraintlayout:constraintlayout:1.1.3' // Instrumentation tests diff --git a/lib/src/main/java/ch/poole/openinghoursfragment/OpeningHoursFragment.java b/lib/src/main/java/ch/poole/openinghoursfragment/OpeningHoursFragment.java index 2e338ce..3cac65e 100644 --- a/lib/src/main/java/ch/poole/openinghoursfragment/OpeningHoursFragment.java +++ b/lib/src/main/java/ch/poole/openinghoursfragment/OpeningHoursFragment.java @@ -378,19 +378,6 @@ public static OpeningHoursFragment newInstanceForFragment(@NonNull ValueWithDesc return f; } - @Override - public void onAttach(Context context) { - super.onAttach(context); - Log.d(DEBUG_TAG, "onAttach"); - if (!useFragmentCallback) { - try { - saveListener = (OnSaveListener) context; - } catch (ClassCastException e) { - throw new ClassCastException(context.toString() + " must implement OnSaveListener"); - } - } - } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -412,6 +399,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { @SuppressLint("InflateParams") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Log.d(DEBUG_TAG, "onCreateView"); int initialRule = -1; if (savedInstanceState != null) { Log.d(DEBUG_TAG, "Restoring from saved state"); @@ -506,13 +494,20 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa AppCompatButton cancel = (AppCompatButton) openingHoursLayout.findViewById(R.id.cancel); cancel.setOnClickListener(v -> dismiss()); - if (useFragmentCallback) { - Fragment fragment = getParentFragment(); - // we may be nested one or two levels deep - if (!(fragment instanceof OnSaveListener)) { - fragment = fragment.getParentFragment(); + Object listener = null; + try { + if (useFragmentCallback) { + listener = getParentFragment(); + // we may be nested one or two levels deep + if (!(listener instanceof OnSaveListener)) { + listener = ((Fragment) listener).getParentFragment(); + } + } else { + listener = getContext(); } - saveListener = (OnSaveListener) fragment; + saveListener = (OnSaveListener) listener; + } catch (ClassCastException e) { + throw new ClassCastException(listener != null ? listener.getClass().getCanonicalName() + " must implement OnSaveListener" : "OnSaveListener is null"); } saveButton = (AppCompatButton) openingHoursLayout.findViewById(R.id.save);