Egret社区
本帖最后由 panming0230 于 2021-2-25 17:55 编辑

在做热更新实验的时候,为什么调用 nativeAndroid.callExternalInterface 一直报空指针?
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch);

        btn_load = (Button) findViewById(R.id.btn_load);
        btn_game = (Button) findViewById(R.id.btn_game);

        btn_load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn_load.setEnabled(false);
                btn_game.setEnabled(false);
                preloadGame();
            }
        });

        btn_game.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(com.monolith.tetris.LaunchActivity.this, MainActivity.class);
                intent.putExtra("preloadPath", preloadPath);
                startActivity(intent);
            }
        });

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            int check = checkSelfPermission(permissions[0]);
            if (check != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(permissions, 111);
            }
        }
        nativeAndroid= new EgretNativeAndroid(this);               

        // 空指针报错
        nativeAndroid.callExternalInterface("sendToJS", "sendToJS");
}

报错信息:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.egret.egretnativeandroid.c.a(java.lang.String, java.lang.String)' on a null object reference
        at org.egret.egretnativeandroid.EgretNativeAndroid.callExternalInterface(EgretNativeAndroid.java:167)
        at com.monolith.tetris.LaunchActivity.onCreate(LaunchActivity.java:72)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)



分享到 :
0 人收藏

2 个回复

倒序浏览
app小王子  社区管理员 | 2021-3-1 15:26:27
你这里刚创建完 native对象 还没有加载游戏 就调用这个函数给js发消息 用法不正确。另外你这个是要进行热更新吗?
panming0230  登堂入室 | 2021-3-1 22:36:48
app小王子 发表于 2021-3-1 15:26
你这里刚创建完 native对象 还没有加载游戏 就调用这个函数给js发消息 用法不正确。另外你这个是要进行热更 ...

是的,热更新。
谢谢回答,我调整了执行时机,确实是这个问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部