我是黑莓应用开发的初学者。
我已成功在 eclipse 中安装了 blackberry 插件。我的第一个应用程序需要从我在项目中创建名为“assets”的文件夹中加载html文件。那么如何加载html文件“assets / index.html”?
public static void main(String[] args)
{
// Create a new instance of the application and make the currently
// running thread the application's event dispatch thread.
Ramadanclass theApp = new Ramadanclass();
theApp.enterEventDispatcher();
}
mainscreen:
public final class Ramadan extends MainScreen
{
public Ramadan()
{
setTitle("Ramadan");
}
}
编辑:我尝试过的内容:
BrowserField myBrowserField = new BrowserField();
add(myBrowserField);
myBrowserField.requestContent("assets/index.html");
出现此错误
资产/ index.html没有导航请求处理程序
答案 0 :(得分:0)
正如the link that @Turdnugget supplied所说:
BrowserField类不使用文件夹结构访问资源。 BrowserField类显示找到的与指定文件名匹配的第一个资源。
这意味着即使您将index.html放入assets
文件夹,BlackBerry构建过程和/或运行时也将展平(即忽略)您的目录结构,因此您'll必须加载html文件:
myBrowserField.requestContent("local:///index.html");
您可以想象,如果您的项目中只有一个名为index.html
的文件,则此工作正常,但如果您有两个具有该名称的文件,则在不同的文件夹中,浏览器字段可能无法加载您想。我有项目,我有不同版本的html文件,根据设备或应用程序的版本(完整与免费)加载。所以,我希望能够将我的html资源存储在不同的文件夹中。
为实现这一目标,我在BrowserField
使用了以下代码:
browser = new BrowserField();
add(browser);
InputStream content = getClass().getResourceAsStream("/resourcesWeb/index.html");
try {
byte[] html = IOUtilities.streamToBytes(content);
browser.displayContent(new String(html), "http://localhost");
} catch (IOException e) {
e.printStackTrace();
}
为了实现这一点,我将文件index.html
存储在名为resourcesWeb
的文件夹中(无论您喜欢将其命名),该文件夹位于顶级res
文件夹中
请注意,这不是Android。通常没有assets
目录。当您使用BlackBerry Eclipse插件创建新项目时,它会为您创建src
和res
文件夹。我会用那个。如果需要,创建一个新项目。然后,将所有非源代码资源(html,xml,图像等)保存在res
文件夹下的某个位置。
如果您没有以这种方式创建项目,您可能会发现您的应用程序是在不包含您创建的assets
文件夹的情况下构建的。您可以通过右键单击Eclipse中的项目并选择属性来 修复此问题。您可以使用此对话框将assets
文件夹添加到构建路径:
并注意assets
也应显示在订单和导出标签中。
但是,我认为以BlackBerry Eclipse插件的方式创建和使用项目最简单。这也将使您的项目对于看到您的代码的其他BlackBerry Java开发人员更加熟悉。在我看来,你应该保存Android项目的Android命名约定。