2012-04-20 2 views
0

나를 위해 입력 창을 직접 만드는 팩토리 클래스가 있습니다. 이 팩토리 클래스를 만드는 이유는 입력 창이 많이 만들어져 있기 때문에 입력 창을 간단하게 만드는 것입니다. 우리는 현재 iOS에서 안드로이드로 우리의 애플 리케이션을 포팅하고 있으며, 그 때 우리는이 문제를 발견했습니다.passwordMask 또는 keyboardType이 설정된 textfield가 android에서 충돌합니다.

는 나는 그렇게 같은 텍스트 필드 만들려고 해요 :이 iOS에서 완벽하게 잘 작동

textField = Ti.UI.createTextField 
    left: indentLeft 
    right: 10 
    color: "#336699" 
    borderStyle: Ti.UI.INPUT_BORDERSTYLE_NONE 
    field: field 
    hintText: field.hint 
    value: field.value 
    tag: field.name 
    autocorrect: field.autocorrect 
    autocapitalization: field.autocapitalization 
    enabled: (field.enabled != false) 
    keyboardType: field.keyboardType 
    passwordMask: field.passwordMask 
    returnKeyType: Ti.UI.RETURNKEY_DEFAULT 
    textAlign: field.textAlign 

, 그리고 field.keyboardType 및 field.passwordMask에 의해 지정된 값은 titianium 워드 프로세서에 따라 완벽하게 합법적 값입니다 . 그러나, 내 안드로이드 애플 리케이션 충돌 내가 passwordMask 및 keyboardType 밖으로 주석 ... 왜 이런 일이 일어 났을까? Heres는 안드로이드 crashlog : org.appcelerator.titanium.util.TiConvert.toBoolean에서

E/TiApplication(1216): (main) [249,918] Sending event: exception on thread: main msg:java.lang.IllegalArgumentException: Unable to convert null to boolean.; Titanium 2.0.1,2012/04/12 16:36,999c68a 
    E/TiApplication(1216): java.lang.IllegalArgumentException: Unable to convert null to boolean. 
    E/TiApplication(1216):  at org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:342) 
    E/TiApplication(1216):  at org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:355) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.TiUIText.handleKeyboard(TiUIText.java:368) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.TiUIText.processProperties(TiUIText.java:171) 
    E/TiApplication(1216):  at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:737) 
    E/TiApplication(1216):  at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:530) 
    E/TiApplication(1216):  at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:522) 
    E/TiApplication(1216):  at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:500) 
    E/TiApplication(1216):  at org.appcelerator.titanium.proxy.TiViewProxy.forceCreateView(TiViewProxy.java:485) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.refreshControls(TiTableViewRowProxyItem.java:133) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:280) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:216) 
    E/TiApplication(1216):  at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
    E/TiApplication(1216):  at android.widget.ListView.makeAndAddView(ListView.java:1727) 
    E/TiApplication(1216):  at android.widget.ListView.fillDown(ListView.java:652) 
    E/TiApplication(1216):  at android.widget.ListView.fillSpecific(ListView.java:1284) 
    E/TiApplication(1216):  at android.widget.ListView.layoutChildren(ListView.java:1570) 
    E/TiApplication(1216):  at android.widget.AbsListView.onLayout(AbsListView.java:1147) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
    E/TiApplication(1216):  at ti.modules.titanium.ui.widget.tableview.TiTableView.onLayout(TiTableView.java:516) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:519) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
    E/TiApplication(1216):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
    E/TiApplication(1216):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
    E/TiApplication(1216):  at android.view.View.layout(View.java:7035) 
    E/TiApplication(1216):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
    E/TiApplication(1216):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
    E/TiApplication(1216):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    E/TiApplication(1216):  at android.os.Looper.loop(Looper.java:123) 
    E/TiApplication(1216):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
    E/TiApplication(1216):  at java.lang.reflect.Method.invokeNative(Native Method) 
    E/TiApplication(1216):  at java.lang.reflect.Method.invoke(Method.java:521) 
    E/TiApplication(1216):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    E/TiApplication(1216):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    E/TiApplication(1216):  at dalvik.system.NativeStart.main(Native Method) 
D/dalvikvm(1216): GC_FOR_MALLOC freed 4053 objects/380032 bytes in 77ms 

답변

0

(TiConvert.java:342는)

위의 오류는 라인 (342)에 TiConvert.java 클래스에 당신이 있음을 나타냅니다 부울 값으로 null 값을 변환하려고 시도합니다.

+0

있습니다 ... 이것은 passwordMask가 주석 처리되지 않았고 passwordMask에 전달 된 값이 null이 아닌 경우에만 발생합니다. 여러 가지 값을 시도했는데 모두 null이 아닙니다. 여전히 같은 오류. –

+0

하드 코딩으로 설정하려고 했습니까? –

+0

아, 그건 이상한 이유로 실제로 일했습니다. 내가 안드로이드 나 아이폰에서 충돌하지 않도록 고정시키는 방법은 passwordMask를 사용하는 것이었다 : (field.passwordMask === true) –

관련 문제