0

Minitemplator(http://www.source-code.biz/MiniTemplator/)をAndroidのアプリケーションに統合しようとしていますが、少し迷っています。

テンプレートファイルにアクセスできます。テンプレートファイルはアセットディレクトリにあり、次の方法でファイルを取得しようとしています。

Uri path = Uri.parse("file:///android_asset/index.html");

この方法でオブジェクトをインスタンス化します。

MiniTemplator t = new MiniTemplator(path.getPath());

しかし、ファイルまたはフォルダが存在しないというio例外が送信されます。

ミニテンプレーターオブジェクトをインスタンス化するためにファイルを送信する正しい方法はどのようになっていますか?

これは完全なコードです:

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;
    }
}
4

2 に答える 2

2

HTMLファイルではなく文字列からテンプレートをロードする際の問題を解決しました。

最初に、テンプレート文字列を内容とする仕様オブジェクトを作成する必要があります

MiniTemplator.TemplateSpecification templateSpec = new MiniTemplator.TemplateSpecification();

次に、テンプレート文字列を templateString プロパティに追加します

templateSpec.templateText = "<html><body><h1>${hello}</h1></body></html>";

次に、仕様オブジェクトを使用して Minitemplator オブジェクトをインスタンス化する必要があります。

t = new MiniTemplator(templateSpec);

そして、テンプレート内の変数の値を次のように変更する必要があります。

t.setVariable("hello", "Hola Mundo!");

どうもありがとう :)

于 2012-10-03T20:38:07.970 に答える