本程序源码下载在底部。

附:对于通过cmd创建的项目(调用cordova create命令),如果要新建其他activity,不能直接右键-新建android Activity,否则会报出错误ERROR: In MenuView, unable to find attribute android:preserveIconSpacing。因此,建议自己新建一个类,让它继承Activity,然后再新建其布局文件以及在配置文件中配置这个activity。另外,本程序使用的cordova版本是2.9.0,保留了addjavascriptinterface方法。截止2015/5/5的cordova 5.0版本已经取消了这个方法,建议使用插件进行交互。请根据自己的需求选择合适的方法。

本程序流程如下:

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,如下图: