2016-07-27 3 views
0

ここで、githubで他の類似の問題を見てきましたが、類推に基づいて解決策を見つけることができませんでした。(Nativescript)index 0のid xを持つJavaScriptオブジェクトを変換できません。インターフェイスの実装

私はAndroid上で動作するように、次のプラグインを取得しようとしている:

JS: ORIGINAL STACKTRACE: 
JS: Error: Cannot convert JavaScript object with id 683715827 at index 0 
JS:  at Error (native) 
JS:  at Object.text_to_speech.speak (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/nativescript-texttospeech/texttospeech.js:20:10) 
JS:  at TextToSpeech.speakText (/data/data/org.nativescript.CzystyDywan/files/app/pages/texttospeech/texttospeech.component.js:9:13) 
JS:  at DebugAppView._View_TextToSpeech0._handle_tap_4_0 (TextToSpeech.template.js:148:28) 
JS:  at Object.<anonymous> (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/@angular/core/src/linker/view.js:316:24) 
JS:  at ZoneDelegate.invoke (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/zone.js/dist/zone-node.js:281:29) 
JS:  at Object.NgZoneImpl.inner.inner.fork.onInvoke (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/@angular/core/src/zone/ng_zone_impl.js:45:41) 
JS:  at ZoneDelegate.invoke (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/zone.js/dist/zone-node.js:280:35) 
JS:  at Zone.runGuarded (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/zone.js/dist/zone-node.js:188:48) 
JS:  at Object.callback (/data/data/org.nativescript.CzystyDywan/files/app/tns_modules/zone.js/dist/zone-node.js:164:30) 
JS: ERROR CONTEXT: 
JS: [object Object] 
W/System.err(3701): at com.tns.Runtime.callJSMethodNative(Native Method) 
W/System.err(3701): at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:861) 
W/System.err(3701): at com.tns.Runtime.callJSMethodImpl(Runtime.java:726) 
W/System.err(3701): at com.tns.Runtime.callJSMethod(Runtime.java:712) 
W/System.err(3701): at com.tns.Runtime.callJSMethod(Runtime.java:693) 
W/System.err(3701): at com.tns.Runtime.callJSMethod(Runtime.java:683) 

私は、これは持っていることを理解:TTSオブジェクトを初期化するとき残念ながら

var app = require("application"); 
var context = android.content.Context; 
var TextToSpeech = android.speech.tts.TextToSpeech; 
var initialised = false; 
var tts; 

var text_to_speech = { 
    speak : function(text, queue, pitch, speakRate, volume){ 

     if(!tts || !initialised) { 
      tts = new TextToSpeech(context, new TextToSpeech.OnInitListener({ 
       onInit : function(status) { 
        // some code here 
       } 
      })); 
     } 
    } 
}; 

私は例外を取得していますTextToSpeech.OnInitListenerインターフェイスの実装と関係がありますが、ここで間違っていることは本当にわかりません。誰もが同様の問題を抱えていて、いくつかのヒントを共有することができますか?ありがとう!

答えて

0

私は実際にはttsオブジェクトを間違って構築していました.App.android.contextを使用する代わりに、android.content.Contextを使用してコンストラクタのコンテキストを取得していました。これは私が前者に対して「未定義」になっていたためです。今私はこのヘルパー関数を使って現在のコンテキストを取得しています:

function _getContext() { 
    if (appModule.android.context) { 
     return (appModule.android.context); 
    } 
    var ctx = java.lang.Class.forName("android.app.AppGlobals").getMethod("getInitialApplication", null).invoke(null, null); 
    if (ctx) return ctx; 

    ctx = java.lang.Class.forName("android.app.ActivityThread").getMethod("currentApplication", null).invoke(null, null); 
    return ctx; 
} 
関連する問題