当我从Ajax函数获得成功的事件时,我想关闭我的Web视图或重定向到MainActivity.Java
。
让我解释一下。
在按钮的单击事件中,我通过意图将其称为WebviewActivity.java
。现在,我有了php文件,该文件通过webview.loadUrl()
加载到webview中。现在用户将进入此页面并输入他们的详细信息,然后按ok,他们的数据将通过php文件的ajax调用插入到页面中。在成功执行ajax调用时,div<div>
标签将被隐藏,而另一个<div>
标签将显示,其中包含一条消息“您的详细信息已被记录”。现在我放了onBackPress()
,因此用户将重新使用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);
}
}
答案 0 :(得分:1)
您可以从Web视图中的javascript调用Java函数。
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
<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>
在Javascript中,有一个称为Android的全局对象。对象名称来自addJavascriptInterface方法。该对象具有在接口类中注释的所有方法,在此示例中为showToast(String toast)。 if语句用于检查是否设置了对象。有了这个if语句,该网站也可以在不存在Android界面的其他浏览器中使用。