我正在尝试将Minitemplator(http://www.source-code.biz/MiniTemplator/)整合到Android应用程序中,但我很少迷失。
我可以访问模板文件,模板文件在资产目录中,我尝试以这种方式获取文件:
Uri path = Uri.parse("file:///android_asset/index.html");
以这种方式实例化对象:
MiniTemplator t = new MiniTemplator(path.getPath());
但它向我发送了一个io异常,即文件或文件夹不存在。
如何以正确的方式发送文件来实例化我的minitemplator对象?
这是完整的代码:
package com.kentverger.minitemplator;
import java.io.File;
import java.io.IOException;
import biz.source_code.miniTemplator.MiniTemplator;
import biz.source_code.miniTemplator.MiniTemplator.TemplateSyntaxException;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.webkit.WebView;
public class Template extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_template);
WebView index = (WebView) findViewById(R.id.indexWebView);
Uri path = Uri.parse("file:///android_asset/index.html");
try {
MiniTemplator t = new MiniTemplator(path.getPath());
t.setVariable("titulo", "Hola mundo generado desde java");
String html_code = t.generateOutput();
index.loadData(html_code, "text/html", null);
} catch (TemplateSyntaxException e) {
Log.d("ERROR 1", e.getMessage());
} catch (IOException e) {
Log.d("ERROR 2", e.getMessage());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_template, menu);
return true;
}
}
答案 0 :(得分:2)
我解决了从字符串而不是html文件加载模板的问题。
首先,我必须创建一个将对模板String
进行内容的规范对象MiniTemplator.TemplateSpecification templateSpec = new MiniTemplator.TemplateSpecification();
然后将模板String添加到templateString属性
templateSpec.templateText = "<html><body><h1>${hello}</h1></body></html>";
接下来,我们必须使用speciciations对象
实例化Minitemplator对象t = new MiniTemplator(templateSpec);
我们已经按照以下方式更改模板中变量的值:
t.setVariable("hello", "Hola Mundo!");
非常感谢:)
答案 1 :(得分:0)
MiniTemplator miniTemplator = openHtmlFileFromAssert(activity, "test.html");
尝试此方法正常工作,有助于从assert文件夹中读取html文件
public MiniTemplator openHtmlFileFromAssert(Activity activity, String fileName) {
try {
AssetManager assetManager = activity.getAssets();
InputStream inputStream = assetManager.open(fileName);
MiniTemplator.Builder templateBuilder = new MiniTemplator.Builder();
return templateBuilder.build(inputStream, Charset.defaultCharset());
} catch (IOException e) {
e.printStackTrace();
return null;
}
}