本程序源码下载在底部。
附:对于通过cmd创建的项目(调用cordova create命令),如果要新建其他activity,不能直接右键-新建android Activity,否则会报出错误ERROR: In
本程序流程如下:
1. 定义一个主界面,使用Activity。这里我们先定义一个TestActivity,代码如下:
```java
public class TestActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
super.loadUrl("file:///android_asset/www/index.html");
}
}
```
2. 在PhoneGap2Activity里面,这个类继承的是DroidGap类,这样在这个activity里面就很容易跳转到一个html页面了。也就是说这个activity会跳转到某个html页面里面。那么显示的就是跳转后html页面的内容了。我在思考怎样从跳转后的html页面回到TestActivity里面去呢,这里面就涉及到js调用java的代码了,其实通过appView.addJavascriptInterface(obj, String str)增加一个js操作java的接口就可以了,第一个参数是类的实例,第二个参数是调用该实例的js的名字。
下面是PhoneGap2Activity代码:
```java
public class PhoneGap2Activity extends DroidGap {
private TestActivity testActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
super.loadUrl("file:///android_asset/www/index.html");
testActivity = new TestActivity();
}
}
```
3. 这个html页面就是跳转后的html页面,它通过定义的js函数直接调用java方法,通过js调用PhoneGap2Activity的method方法,从而实现html页面向TestActivity跳转的功能。注意引入的包。
注:对于上面的示例,如果用虚拟机调试,当虚拟机版本为2.3时,可能没有结果,程序并没有问题,因为这是该版本虚拟机的bug。将版本改为2.2就可以解决问题。
要解决这个bug,可以尝试以下方法:
1. 检查是否有拼写错误或者遗漏的导入语句。
2. 确保在TestActivity中正确地调用了finish()方法。
3. 如果你在手机上调试,可能会遇到一些兼容性问题,可以尝试在模拟器上运行。
运行效果图如下:
初始化页面如下:
初始值均为null,点击按钮进入html页面,输入用户名和密码,如下图:
点击按钮,回到TestActivity,如下图: