【问题标题】:Titanium opening Alloy controller from button click exception钛合金控制器从按钮点击异常
【发布时间】:2015-01-27 21:52:32
【问题描述】:

所以这在 iOS 中似乎可以正常工作,但在 Android 中,当我创建控制器并通过按下按钮打开它的视图时。

这是我正在调用的代码:

function goToWebView(){
    win.close();
    var test = Alloy.createController('web').getView();
    test.open();
}

...

button.addEventListener('click',function(e)
{
    Ti.API.info("Button clicked!")
    goToWebView(); //<-- exceptions start here, only on Android
});

它给出了这些例外:

(干净的格式:http://pastebin.com/8f6cCh1X

[ERROR] : TiApplication: (main) [4929,5505] 发送事件:线程异常:main msg:java.lang.NullPointerException: 尝试调用虚拟方法 'void org.appcelerator.titanium.TiBaseActivity.addOnLifecycleEventListener( org.appcelerator.titanium.TiLifecycle$OnLifecycleEvent)' 在空对象引用上;钛 3.4.1,2014/11/13 13:33,5982e8f [错误]:TiApplication:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void org.appcelerator.titanium.TiBaseActivity.addOnLifecycleEventListener(org.appcelerator.titanium.TiLifecycle$OnLifecycleEvent)” [错误]:TiApplication:在 ti.modules.titanium.ui.WebViewProxy.createView(WebViewProxy.java:83) [错误]:TiApplication:在 org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:483) [错误]:TiApplication:在 org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:225) [错误]:TiApplication:在 ti.modules.titanium.ui.WebViewProxy.handleMessage(WebViewProxy.java:198) [错误]:TiApplication:在 android.os.Handler.dispatchMessage(Handler.java:98) [错误]:TiApplication:在 android.os.Looper.loop(Looper.java:135) [错误]:TiApplication:在 android.app.ActivityThread.main(ActivityThread.java:5221) [错误]:TiApplication:在 java.lang.reflect.Method.invoke(本机方法) [错误]:TiApplication:在 java.lang.reflect.Method.invoke(Method.java:372) [错误]:TiApplication:在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) [错误]:TiApplication:在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

如果我从超时调用 goToWebView() 也会得到相同的异常。如果我不从按钮事件或某种回调中调用它,它在 Android 中有效,但如果它在回调中,它会给出这些异常。

我能做什么?

【问题讨论】:

  • 你能提供你正在打开的网络文件的视图和控制器吗?

标签: java android exception titanium titanium-alloy


【解决方案1】:

您在打开另一个上下文之前关闭了上下文。

function goToWebView(){
    win.close(); // <-- HERE
    var test = Alloy.createController('web').getView();
    test.open();
}

尝试反转它:

function goToWebView(){
    var test = Alloy.createController('web').getView();
    test.open();
    win.close();
}

顺便说一句,如果win 是您的主窗口,通常您不需要.close 它,因为它启用了exitOnClose

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多