带有webview的Android onBackPressed()

时间:2018-12-03 17:07:09

标签: javascript java android webview

我的MainActivity打开一个Web视图。

当用户按下设备的后退按钮时,该命令会通过接口传递给javascript代码,该代码可以执行操作并返回“ 1”,或者不执行任何操作并返回“ 0”。

返回“ 0”时,应用程序进入后台。 该代码有效,但有时我会发现错误:

java.lang.NullPointerException:位于x.MainActivity.onBackPressed(未知来源:2)

这是MainActivity中的代码

@Override
public void onBackPressed() {
    mWebInterface.signal.onBackPressed();
}

这是外部类中的代码:

public void onBackPressed( ) {
    if (ready) {
        mWebView.post(new Runnable() {
            public void run() {
                final String cmd = "event.signal.devicePressBack()";
                mWebView.evaluateJavascript(cmd, new ValueCallback<String>(){
                    @Override
                    public void onReceiveValue(String s) {
                        if (s.equals("1")){
                            // javascript do something
                        }else{
                            mContext.moveTaskToBack(true);
                        }
                    }
                });
            }
        });
    }else{
        mContext.moveTaskToBack(true);
    }
}

1)可能是什么问题?

2)除了错误之外,如果使用Listener进行管理,与javascript对话的代码会更好?

0 个答案:

没有答案