Skip to content

Commit 4660148

Browse files
author
Kevin Ménager
committed
Fix crash with BottomNavigationView in version > 25.2.0
(ClassNotFoundException when unmarshalling: android.support.design.widget.BottomNavigationView) Add support for Jitpack Upgrade gradle to 3.3+ Upgrade lib to latest 25.4.0 with maven repository
1 parent 6f0a77a commit 4660148

8 files changed

Lines changed: 40 additions & 44 deletions

File tree

adaptablebottomnavigation/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ group = 'com.github.kmenager'
55

66
android {
77
compileSdkVersion 25
8-
buildToolsVersion "25.0.2"
8+
buildToolsVersion "25.0.3"
99

1010
defaultConfig {
1111
minSdkVersion 15
1212
targetSdkVersion 25
13-
versionCode 1
14-
versionName "1.0"
13+
versionCode 2
14+
versionName "1.1.0"
1515
}
1616
buildTypes {
1717
release {
@@ -22,7 +22,7 @@ android {
2222
}
2323

2424
dependencies {
25-
final SUPPORT_LIBRARY_VERSION = '25.2.0'
25+
final SUPPORT_LIBRARY_VERSION = '25.4.0'
2626
compile fileTree(dir: 'libs', include: ['*.jar'])
2727
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
2828
exclude group: 'com.android.support', module: 'support-annotations'

adaptablebottomnavigation/src/main/java/org/buffer/adaptablebottomnavigation/view/AdaptableBottomNavigationView.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.support.design.widget.BottomNavigationView;
99
import android.support.v4.os.ParcelableCompat;
1010
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
11+
import android.support.v4.view.AbsSavedState;
1112
import android.util.AttributeSet;
1213
import android.view.MenuItem;
1314

@@ -91,51 +92,45 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
9192
}
9293
}
9394

94-
public static class SavedState extends BaseSavedState {
95+
public static class SavedState extends AbsSavedState {
9596
int position;
96-
Parcelable viewState;
9797
ClassLoader loader;
9898

9999
public SavedState(Parcelable superState) {
100100
super(superState);
101101
}
102102

103+
SavedState(Parcel in, ClassLoader loader) {
104+
super(in, loader);
105+
position = in.readInt();
106+
this.loader = loader;
107+
}
108+
103109
@Override
104110
public void writeToParcel(Parcel out, int flags) {
105111
super.writeToParcel(out, flags);
106112
out.writeInt(position);
107-
out.writeParcelable(viewState, flags);
108113
}
109114

110115
@Override
111116
public String toString() {
112-
return "ViewSwapper.SavedState{"
117+
return "SavedState{"
113118
+ Integer.toHexString(System.identityHashCode(this))
114119
+ " position=" + position + "}";
115120
}
116121

117-
public static final Creator<ViewSwapper.SavedState> CREATOR
118-
= ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks<ViewSwapper.SavedState>() {
122+
public static final Creator<SavedState> CREATOR
123+
= ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks<SavedState>() {
119124
@Override
120-
public ViewSwapper.SavedState createFromParcel(Parcel in, ClassLoader loader) {
121-
return new ViewSwapper.SavedState(in, loader);
125+
public SavedState createFromParcel(Parcel in, ClassLoader loader) {
126+
return new SavedState(in, loader);
122127
}
123128

124129
@Override
125-
public ViewSwapper.SavedState[] newArray(int size) {
126-
return new ViewSwapper.SavedState[size];
130+
public SavedState[] newArray(int size) {
131+
return new SavedState[size];
127132
}
128133
});
129-
130-
SavedState(Parcel in, ClassLoader loader) {
131-
super(in);
132-
if (loader == null) {
133-
loader = getClass().getClassLoader();
134-
}
135-
position = in.readInt();
136-
viewState = in.readParcelable(loader);
137-
this.loader = loader;
138-
}
139134
}
140135

141136
}

adaptablebottomnavigation/src/main/java/org/buffer/adaptablebottomnavigation/view/ViewSwapper.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88
import android.os.Parcelable;
99
import android.support.v4.os.ParcelableCompat;
1010
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
11+
import android.support.v4.view.AbsSavedState;
1112
import android.util.AttributeSet;
1213
import android.widget.FrameLayout;
13-
14-
import org.buffer.adaptablebottomnavigation.model.ItemInfo;
15-
import org.buffer.adaptablebottomnavigation.adapter.ViewSwapperAdapter;
16-
1714
import java.util.ArrayList;
1815
import java.util.Collections;
1916
import java.util.Comparator;
17+
import org.buffer.adaptablebottomnavigation.adapter.ViewSwapperAdapter;
18+
import org.buffer.adaptablebottomnavigation.model.ItemInfo;
2019

2120
public class ViewSwapper extends FrameLayout {
2221

@@ -139,7 +138,7 @@ private void showItemInternal(int position) {
139138
* state, in which case it should implement a subclass of this which
140139
* contains that state.
141140
*/
142-
public static class SavedState extends BaseSavedState {
141+
public static class SavedState extends AbsSavedState {
143142
int position;
144143
Parcelable adapterState;
145144
ClassLoader loader;
@@ -148,13 +147,25 @@ public SavedState(Parcelable superState) {
148147
super(superState);
149148
}
150149

150+
public SavedState(Parcel in, ClassLoader loader) {
151+
super(in, loader);
152+
readFromParcel(in, loader);
153+
}
154+
151155
@Override
152156
public void writeToParcel(Parcel out, int flags) {
153157
super.writeToParcel(out, flags);
154158
out.writeInt(position);
155159
out.writeParcelable(adapterState, flags);
156160
}
157161

162+
private void readFromParcel(Parcel in, ClassLoader loader) {
163+
position = in.readInt();
164+
adapterState = in.readParcelable(
165+
loader != null ? loader : ViewSwapperAdapter.class.getClassLoader());
166+
this.loader = loader;
167+
}
168+
158169
@Override
159170
public String toString() {
160171
return "FragmentPager.SavedState{"
@@ -174,16 +185,6 @@ public SavedState[] newArray(int size) {
174185
return new SavedState[size];
175186
}
176187
});
177-
178-
SavedState(Parcel in, ClassLoader loader) {
179-
super(in);
180-
if (loader == null) {
181-
loader = getClass().getClassLoader();
182-
}
183-
position = in.readInt();
184-
adapterState = in.readParcelable(loader);
185-
this.loader = loader;
186-
}
187188
}
188189

189190
@Override

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ buildscript {
1515
allprojects {
1616
repositories {
1717
jcenter()
18+
maven {
19+
url "https://maven.google.com"
20+
}
1821
}
1922
}
2023

sample/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
22

33
android {
44
compileSdkVersion 25
5-
buildToolsVersion "25.0.2"
5+
buildToolsVersion "25.0.3"
66
defaultConfig {
77
applicationId "org.buffer.simplebottomnavigation.sample"
88
minSdkVersion 15
@@ -24,7 +24,7 @@ dependencies {
2424
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
2525
exclude group: 'com.android.support', module: 'support-annotations'
2626
})
27-
compile 'com.android.support:appcompat-v7:25.2.0'
27+
compile 'com.android.support:appcompat-v7:25.4.0'
2828
testCompile 'junit:junit:4.12'
2929
compile project(path: ':adaptablebottomnavigation')
3030
}

sample/src/main/java/org/buffer/adaptablebottomnavigation/sample/ImageFragment.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import android.view.ViewGroup;
99
import android.widget.ImageView;
1010

11-
import org.buffer.simplebottomnavigation.sample.R;
1211

1312
public class ImageFragment extends Fragment {
1413

sample/src/main/java/org/buffer/adaptablebottomnavigation/sample/MainActivity.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import org.buffer.adaptablebottomnavigation.view.AdaptableBottomNavigationView;
77
import org.buffer.adaptablebottomnavigation.view.ViewSwapper;
8-
import org.buffer.simplebottomnavigation.sample.R;
98

109
public class MainActivity extends AppCompatActivity {
1110

sample/src/main/java/org/buffer/adaptablebottomnavigation/sample/ViewSwapperAdapter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import android.support.v4.app.FragmentManager;
55

66
import org.buffer.adaptablebottomnavigation.adapter.FragmentStateAdapter;
7-
import org.buffer.simplebottomnavigation.sample.R;
87

98
public class ViewSwapperAdapter extends FragmentStateAdapter {
109

0 commit comments

Comments
 (0)