【问题标题】:Appcelerator ti.paint module won't load image on androidAppcelerator ti.paint 模块不会在 android 上加载图像
【发布时间】:2014-06-10 15:30:25
【问题描述】:

Android 上的 ti.paint 模块出现错误。 每当我尝试设置图像时,我的应用程序都会崩溃(在 iOS 上运行良好) 我尝试了几个代码:

var paintView = Paint.createPaintView({
    top:0, right:0, bottom:80, left:0,
    image : "images/doge.png",
    eraseMode : true,
    strokeWidth : 70
});

image : "/images/doge.png"

还有

image = "http://dogr.io/doge.png"

最后

var dogeFile = Titanium.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'images/doge.png');
var paintView = Paint.createPaintView({
    top:0, right:0, bottom:80, left:0,
    image : dogeFile.nativePath,
    eraseMode : true,
    strokeWidth : 70
});

但应用程序每次在 Android 上都会崩溃(在 iOS 上运行良好)。

我也尝试过使用 jpeg 图像,甚至使用 NULL 值。

这是我在控制台中收到的错误消息

[ERROR] TiApplication: (main) [0,205] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{wow.much.scratch/org.appcelerator.titanium.TiActivity}: java.lang.NullPointerException; Titanium 3.2.3,2014/04/22 10:17,b958a70
[ERROR] TiApplication: java.lang.RuntimeException: Unable to start activity ComponentInfo{wow.much.scratch/org.appcelerator.titanium.TiActivity}: java.lang.NullPointerException
[ERROR] TiApplication:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
[ERROR] TiApplication:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
[ERROR] TiApplication:  at android.app.ActivityThread.access$600(ActivityThread.java:141)
[ERROR] TiApplication:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
[ERROR] TiApplication:  at android.os.Handler.dispatchMessage(Handler.java:99)
[ERROR] TiApplication:  at android.os.Looper.loop(Looper.java:137)
[ERROR] TiApplication:  at android.app.ActivityThread.main(ActivityThread.java:5103)
[ERROR] TiApplication:  at java.lang.reflect.Method.invokeNative(Native Method)
[ERROR] TiApplication:  at java.lang.reflect.Method.invoke(Method.java:525)
[ERROR] TiApplication:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[ERROR] TiApplication:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[ERROR] TiApplication:  at dalvik.system.NativeStart.main(Native Method)
[ERROR] TiApplication: Caused by: java.lang.NullPointerException
[ERROR] TiApplication:  at ti.modules.titanium.paint.UIPaintView$PaintView.setImage(UIPaintView.java:224)
[ERROR] TiApplication:  at ti.modules.titanium.paint.UIPaintView.<init>(UIPaintView.java:42)
[ERROR] TiApplication:  at ti.modules.titanium.paint.PaintViewProxy.createView(PaintViewProxy.java:30)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:463)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:566)
[ERROR] TiApplication:  at org.appcelerator.titanium.proxy.TiViewProxy.add(TiViewProxy.java:544)
[ERROR] TiApplication:  at ti.modules.titanium.ui.WindowProxy.windowCreated(WindowProxy.java:303)
[ERROR] TiApplication:  at org.appcelerator.titanium.TiActivityWindows.windowCreated(TiActivityWindows.java:32)
[ERROR] TiApplication:  at org.appcelerator.titanium.TiBaseActivity.windowCreated(TiBaseActivity.java:452)
[ERROR] TiApplication:  at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:528)
[ERROR] TiApplication:  at org.appcelerator.titanium.TiActivity.onCreate(TiActivity.java:18)
[ERROR] TiApplication:  at android.app.Activity.performCreate(Activity.java:5133)
[ERROR] TiApplication:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
[ERROR] TiApplication:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
[ERROR] TiApplication:  ... 11 more

我正在运行 Titanium SDK 3.2.3.GA。

任何帮助将不胜感激。

【问题讨论】:

  • 作为一种解决方法,您可以将图像放在绘画模块后面的视图中并在其顶部绘画。然后,如果您需要保存该图像,您可以捕获整个视图。
  • 不幸的是,我需要在模块中加载图像,以便我可以擦除它,以创建某种刮刮卡

标签: android titanium titanium-modules


【解决方案1】:

我目前在 ti.paint 上工作,我在 Android 上遇到了同样的问题。 Android 的管理视图与 Titanium 的不同,那么这就产生了问题...... 这个想法是使用主线程。

这里是 PaintViewProxy.java 模块的变化:

@Kroll.setProperty
@Kroll.method
public void setImage(String imagePath) {
    final String imgPath = imagePath;
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            paintView.setImage(imgPath);
        }
    });
}

重新编译它,它应该可以工作,它对我有用。 我希望你有帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2013-12-23
    • 2019-07-13
    相关资源
    最近更新 更多