Kegbot / kegbot-android

Android beer kegerator frontend and controller app. Works with a Kegbot server to make your kegerator awesome.
http://kegbot.org/docs/android/
GNU General Public License v2.0
41 stars 53 forks source link

Kegerator Cast Exception #111

Closed thehijjt closed 7 years ago

thehijjt commented 7 years ago

Going to Settings/Kegerator, changing settings, and returning to Kegerator will cause the application to crash. I don't have a pin number setup, and I don't have anything set for a network controller. I changed the min ml number, and pour times to 15 second warning, and 30 second max time. When I return to Kegerator, the application closes and re-starts with the below exception.

E/AndroidRuntime: FATAL EXCEPTION: main Process: org.kegbot.app, PID: 4203 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.kegbot.app/org.kegbot.app.SettingsActivity}: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:260) at android.preference.Preference.getPersistedBoolean(Preference.java:1691) at android.preference.TwoStatePreference.onSetInitialValue(TwoStatePreference.java:187) at android.preference.Preference.dispatchSetInitialValue(Preference.java:1376) at android.preference.Preference.onAttachedToHierarchy(Preference.java:1171) at android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:167) at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:108) at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:45) at android.preference.GenericInflater.rInflate(GenericInflater.java:488) at android.preference.GenericInflater.rInflate(GenericInflater.java:493) at android.preference.GenericInflater.inflate(GenericInflater.java:326) at android.preference.GenericInflater.inflate(GenericInflater.java:263) at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272) at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:299) at org.kegbot.app.SettingsActivity$KegeratorFragment.onCreate(SettingsActivity.java:101) at android.app.Fragment.performCreate(Fragment.java:2031) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:863) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.app.BackStackRecord.run(BackStackRecord.java:834) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452) at android.app.Activity.performStart(Activity.java:6005) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  at android.app.ActivityThread.access$800(ActivityThread.java:151)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5254)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

thehijjt commented 7 years ago

When you added the Network Controller Host, you inadvertently overwrote the checkbox for Automatic Flow Start. Line 47 of settings_kegerator.xml

<CheckBoxPreference
        android:defaultValue="true"
        android:key="config:NETWORK_CONTROLLER_HOST"
        android:summaryOff="New pours will only start when a user authenticates"
        android:summaryOn="A new pour will start any time meter activity is detected"
        android:title="Automatically Start Pours">
    </CheckBoxPreference>

Should be

<CheckBoxPreference
        android:defaultValue="true"
        android:key="config:ENABLE_AUTOMATIC_FLOW_START"
        android:summaryOff="New pours will only start when a user authenticates"
        android:summaryOn="A new pour will start any time meter activity is detected"
        android:title="Automatically Start Pours">
    </CheckBoxPreference>
mik3y commented 7 years ago

Whoops! Thanks for catching - shall fix tonight.

mik3y commented 7 years ago

Should be fixed in beta 87, which has been posted to Play. thanks!