【发布时间】:2019-09-13 19:43:54
【问题描述】:
在 Java 中,我有以下代码的文档:
import com.creator.creatorandroidsdk.terminal.DeviceSelectionListener
import com.creator.creatorandroidsdk.TerminalListManager;
public class ConfigPinPadActivity extends Activity implements DeviceSelectionListener {
TerminalListManager terminalListManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
terminalListManager = new TerminalListManager(this,getApplicationContext());
terminalListManager.startTerminalsDiscovery();
}
//...
}
this 被发送到类方法作为对实现本身实例的引用:
terminalListManager = new TerminalListManager(this,getApplicationContext());
我尝试在 NativeScript 中复制代码,但引用不起作用:
const { DeviceSelectionListener } = com.creator.creatorandroidsdk.terminal
const { TerminalListManager } = com.creator.creatorandroidsdk
const superProto = androidx.appcompat.app.AppCompatActivity.prototype
androidx.appcompat.app.AppCompatActivity.extend(
'com.company.configPinPadActivity',
{
interfaces: [DeviceSelectionListener],
terminalListManager: {},
onCreate: function (savedInstanceState) {
console.log('OnCreated fired') // <- It works.
this.terminalListManager = new TerminalListManager(this, utilsModule.ad.getApplicationContext())
出现了这个特定的错误。
JNI ERROR (app bug): attempt to pass an instance of com.company.configPinPadActivity as argument 1 to void com.creator.creatorandroidsdk.TerminalListManager.<init>(com.creator.creatorandroidsdk.terminal.DeviceSelectionListener, android.content.Context)
JNI DETECTED ERROR IN APPLICATION: bad arguments passed to void com.creator.creatorandroidsdk.TerminalListManager.<init>(com.creator.creatorandroidsdk.terminal.DeviceSelectionListener, android.content.Context) (see above for details)
我真的想将com.company.configPinPadActivity 实现的实例传递给new TerminalListManager,并且由于com.company.configPinPadActivity 实现DeviceSelectionListener,我不明白为什么这不起作用。
如何从实现本身中引用实现的实例?
【问题讨论】:
标签: nativescript