Work around crash when default colors are null
Summary: Work around crash in Android TextInput when default colors are null. This likely indicates that the Context is corrupted in some way, so this is not a permanent solution. Changelog: [Internal] Raise soft exception is default platform text color isn't defined Reviewed By: mdvacca Differential Revision: D20351080 fbshipit-source-id: d912c9348272c2f3a3b8d571d465d482060efe5a
This commit is contained in:
Родитель
08c338eebf
Коммит
3cc69d2e2b
|
@ -9,6 +9,8 @@ package com.facebook.react.views.textinput;
|
||||||
|
|
||||||
import static com.facebook.react.uimanager.UIManagerHelper.getReactContext;
|
import static com.facebook.react.uimanager.UIManagerHelper.getReactContext;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
@ -35,6 +37,7 @@ import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||||
import com.facebook.react.bridge.JavaOnlyArray;
|
import com.facebook.react.bridge.JavaOnlyArray;
|
||||||
import com.facebook.react.bridge.JavaOnlyMap;
|
import com.facebook.react.bridge.JavaOnlyMap;
|
||||||
import com.facebook.react.bridge.ReactContext;
|
import com.facebook.react.bridge.ReactContext;
|
||||||
|
import com.facebook.react.bridge.ReactSoftException;
|
||||||
import com.facebook.react.bridge.ReadableArray;
|
import com.facebook.react.bridge.ReadableArray;
|
||||||
import com.facebook.react.bridge.ReadableMap;
|
import com.facebook.react.bridge.ReadableMap;
|
||||||
import com.facebook.react.bridge.ReadableNativeMap;
|
import com.facebook.react.bridge.ReadableNativeMap;
|
||||||
|
@ -496,7 +499,19 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
||||||
@ReactProp(name = ViewProps.COLOR, customType = "Color")
|
@ReactProp(name = ViewProps.COLOR, customType = "Color")
|
||||||
public void setColor(ReactEditText view, @Nullable Integer color) {
|
public void setColor(ReactEditText view, @Nullable Integer color) {
|
||||||
if (color == null) {
|
if (color == null) {
|
||||||
view.setTextColor(DefaultStyleValuesUtil.getDefaultTextColor(view.getContext()));
|
ColorStateList defaultContextTextColor =
|
||||||
|
DefaultStyleValuesUtil.getDefaultTextColor(view.getContext());
|
||||||
|
|
||||||
|
if (defaultContextTextColor != null) {
|
||||||
|
view.setTextColor(defaultContextTextColor);
|
||||||
|
} else {
|
||||||
|
Context c = view.getContext();
|
||||||
|
ReactSoftException.logSoftException(
|
||||||
|
TAG,
|
||||||
|
new IllegalStateException(
|
||||||
|
"Could not get default text color from View Context: "
|
||||||
|
+ (c != null ? c.getClass().getCanonicalName() : "null")));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
view.setTextColor(color);
|
view.setTextColor(color);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче