1200页Java架构面试专题及答案
小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞
百度、字节、美团等大厂常见面试题
webview中js和java相互调用的实例代码
下面是个demo步骤
一,首先创建一个activity
public class Js2JavaActivity extends Activity {
private Button btn_show,btn_hide;
private WebView wv;
private JsInterface JSInterface2 = new JsInterface();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_show = (Button)findViewById(R.id.btn_java2js_show);
btn_hide = (Button)findViewById(R.id.btn_java2js_hide);
wv = (WebView)findViewById(R.id.wv_js2java);
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(JSInterface2,“JSInterface2”);
wv.setWebViewClient(new webviewClient());
wv.loadUrl(“file:///android_asset/test.html”);
}
class webviewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), “内容显示了”, Toast.LENGTH_LONG).show();
wv.loadUrl(String.format(“javascript:java2js(0)”));//这里是java端调用webview的JS
}
});
btn_hide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), “内容隐藏了”, Toast.LENGTH_LONG).show();
wv.loadUrl(String.format(“javascript:java2js(1)”));//这里是java端调用webview的JS
}
});
JSInterface2.setWvClientClickListener(new webviewClick());//这里就是js调用java端的具体实现
}
}
class webviewClick implements JsInterface.wvClientClickListener {
@Override
public void wvHasClickEnvent() {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), “js调用了本地java方法”, Toast.LENGTH_LONG).show();
}
}
}
二,定义要调用的java类和java方法(这里最好单独定义一个类)
public class JsInterface {
/*interface for javascript to invokes*/
public interface wvClientClickListener {
public void wvHasClickEnvent();
}
private wvClientClickListener wvEnventPro = null;
public void setWvClientClickListener(wvClientClickListener listener) {
wvEnventPro = listener;
}
@JavascriptInterface //这个注解很重要
public void javaFunction() {
if(wvEnventPro != null)
wvEnventPro.wvHasClickEnvent();
}
}
三,把下面的html文件复制到一个文本text中。然后把文件名改为test.html
this is a hide div~~~~
四,为照顾大家,把布局文件也直接贴出出来
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical” >
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”
android:layout_weight=“1”>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:id=“@+id/btn_java2js_show”
android:text=“java调用js显示内容”/>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:id=“@+id/btn_java2js_hide”
android:text=“java调用js隐藏内容”/>
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”
android:layout_weight=“1”>
<WebView
android:id=“@+id/wv_js2java”
android:layout_width=“match_parent”
android:layout_height=“match_parent”/>
只需要上面简简单单的四个步骤,就能实现webview中js和java的相互调用了。
注意事项
1,需要在整个html页面加载完成后才能调用js事件,在使用webview加载网页时,
言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
[外链图片转存中…(img-nZBDMNW8-1715808484313)]
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
[外链图片转存中…(img-ohKtN6Z2-1715808484314)]
搜集费时费力,能看到此处的都是真爱!