Settings crashes on opening Wi-Fi Add network

Since Theme_Settings_NoActionBar extends from Theme.DeviceDefault.Settings,
so it carshed when AppCompatDelegateImpl tried to get AppCompat theme from WifiDialog.

Test: visual inspection, robo
Change-Id: I751b771fdfa9ad2261baa5a06274f6bb0a70d677
Fixes: 111804691
This commit is contained in:
tmfang
2018-07-26 17:32:49 +08:00
parent ee8bf5d463
commit 9d4a806f28
3 changed files with 21 additions and 5 deletions

View File

@@ -165,12 +165,28 @@
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
</style> </style>
<style name="Theme.Settings.Home" parent="Theme.AppCompat.Light.NoActionBar"> <style name="Theme.Settings.Home" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Color names copied from frameworks/base/core/res/res/values/themes_device_defaults.xml --> <!-- Color names copied from frameworks/base/core/res/res/values/themes_device_defaults.xml -->
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item> <item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
<item name="colorPrimaryDark">@*android:color/primary_dark_device_default_settings_light</item> <item name="colorPrimaryDark">@*android:color/primary_dark_device_default_settings_light</item>
<item name="android:colorAccent">@*android:color/accent_device_default_light</item> <item name="colorAccent">@*android:color/accent_device_default_light</item>
</style>
<!--TODO(b/111875856) This theme will be useless, when we add real activity/fragment to handle the full screen for WifiDialog -->
<style name="Theme.Settings.WifiDialogFullScreen" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Color names copied from frameworks/base/core/res/res/values/themes_device_defaults.xml -->
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
<item name="colorPrimaryDark">@*android:color/primary_dark_device_default_settings_light</item>
<item name="colorAccent">@*android:color/accent_device_default_light</item>
<!-- Add white nav bar with divider that matches material -->
<item name="android:navigationBarDividerColor">@color/ripple_material_light</item>
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:windowLightNavigationBar">true</item>
<item name="android:windowLightStatusBar">true</item> <item name="android:windowLightStatusBar">true</item>
<!-- For AndroidX AlertDialog -->
<item name="alertDialogTheme">@style/Theme.AlertDialog</item>
</style> </style>
</resources> </resources>

View File

@@ -50,12 +50,12 @@ public class WifiDialog extends AlertDialog implements WifiConfigUiBase,
private WifiConfigController mController; private WifiConfigController mController;
private boolean mHideSubmitButton; private boolean mHideSubmitButton;
// TODO(b/111875856) WifiDialog should not mimic full screen UI.
/** Creates a WifiDialog with fullscreen style. It displays in fullscreen mode. */ /** Creates a WifiDialog with fullscreen style. It displays in fullscreen mode. */
public static WifiDialog createFullscreen(Context context, WifiDialogListener listener, public static WifiDialog createFullscreen(Context context, WifiDialogListener listener,
AccessPoint accessPoint, int mode) { AccessPoint accessPoint, int mode) {
return new WifiDialog(context, listener, accessPoint, mode, return new WifiDialog(context, listener, accessPoint, mode,
R.style.Theme_Settings_NoActionBar, false /* hideSubmitButton */); R.style.Theme_Settings_WifiDialogFullScreen, false /* hideSubmitButton */);
} }
/** /**

View File

@@ -37,7 +37,7 @@ public class WifiDialogTest {
WifiDialog fullscreen = WifiDialog.createFullscreen(mContext, mListener, mockAccessPoint, WifiDialog fullscreen = WifiDialog.createFullscreen(mContext, mListener, mockAccessPoint,
WifiConfigUiBase.MODE_CONNECT); WifiConfigUiBase.MODE_CONNECT);
assertThat(fullscreen.getContext().getThemeResId()) assertThat(fullscreen.getContext().getThemeResId())
.isEqualTo(R.style.Theme_Settings_NoActionBar); .isEqualTo(R.style.Theme_Settings_WifiDialogFullScreen);
} }
@Test @Test