Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关闭ajax函数成功事件的webview_Javascript_Android_Webview - Fatal编程技术网

Javascript 关闭ajax函数成功事件的webview

Javascript 关闭ajax函数成功事件的webview,javascript,android,webview,Javascript,Android,Webview,当我从Ajax函数获得成功事件时,我想关闭我的webview或重定向到MainActivity.Java 让我解释一下。 单击按钮的事件,我通过intent将其称为WebviewActivity.java。现在我有了php文件,我通过webview.loadUrl()将其加载到webview中。现在用户将进入该页面并输入他们的详细信息,当按下ok时,他们的数据将通过php文件的ajax调用插入页面。成功的ajax调用时,div标记将被隐藏,另一个标记将被显示,其中包含一条消息“您的详细信息已被记

当我从Ajax函数获得成功事件时,我想关闭我的webview或重定向到MainActivity.Java

让我解释一下。

单击按钮的事件,我通过intent将其称为
WebviewActivity.java
。现在我有了php文件,我通过
webview.loadUrl()
将其加载到webview中。现在用户将进入该页面并输入他们的详细信息,当按下ok时,他们的数据将通过php文件的ajax调用插入页面。成功的ajax调用时,
div
标记将被隐藏,另一个
标记将被显示,其中包含一条消息“您的详细信息已被记录”。现在我将
放在backpress()
所以用户将返回
MainActivity.java
。但是,我希望在成功事件之后,webview自动关闭,或者自动重定向到
MainActivity.java
。有可能做那种事吗?任何帮助都将不胜感激。提前谢谢

下面是webview的代码

public class WebViewActivity extends AppCompatActivity {

Toolbar urTollbar;
WebView webView;
String parsringUrl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    urTollbar = (Toolbar)findViewById(R.id.URanim_toolbar);
    setSupportActionBar(urTollbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setTitle("Submit For Approval");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    webView = (WebView) findViewById(R.id.webview);
    parsringUrl =  getIntent().getStringExtra("ParsingURL");
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.loadUrl(parsringUrl);




}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == android.R.id.home) {
        finish();
        overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

    }

    return super.onOptionsItemSelected(item);

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
    Intent intent = new Intent(WebViewActivity.this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
}

}

您可以在webview中从javascript调用java函数

爪哇

Java方法通过一个特殊的类向Javascript公开。这里有一个例子。公开的方法使用@JavascriptInterface注释进行注释。文件中说,对于API 17级及以上版本,注释是强制性的。我不确定,但我认为在SDK 17之前,所有的方法都是公开的

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}
使用将类添加到webview

myWebView.addJavascriptInterface(new WebAppInterface(this), "android");
第一个参数是带有上下文的接口类,后者是Javascript中要使用的变量名

Javascript


函数showAndroidToast(toast){
if(android的类型!==“未定义”&&android!==null){
showToast(toast);
}否则{
警报(“不在网络视图中查看”);
}
}

在Javascript中有一个称为Android的全局对象。对象名称来自addJavascriptInterface方法。该对象在接口类中注释了所有方法,在本例中为showToast(String toast)。if语句用于检查对象是否已设置。有了这个if语句,该站点也可以从其他浏览器使用,而Android界面不存在。

我必须在java脚本中使用“Android”变量,该变量在Android端定义<代码>myWebView.addJavascriptInterface(新的WebAppInterface(这个),“android”)“android”是在webview中打开网站时的全局变量,所以您可以在任何地方使用。您可以在ajax请求成功回调方法中使用它。那么,我如何才能关闭此webview或将用户重定向到
MainActivity.java
页面?谢谢你,伙计……)在WebAppInterface类中,您可以引用包含WebView的活动,并在启动MainActivity之后完成该活动。好的,得到了我想要的。再次感谢您对我的帮助。:)
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        if(typeof android !== "undefined" && android !== null) {
            android.showToast(toast);
        } else {
            alert("Not viewing in webview");
        }
    }
</script>