Минитемплатор на Android, как получить доступ к файлу шаблона в каталоге активов?

Я пытаюсь интегрировать 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;
    }
}

person kentverger    schedule 03.10.2012    source источник


Ответы (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!");

Большое спасибо :)

person kentverger    schedule 03.10.2012

 MiniTemplator miniTemplator = openHtmlFileFromAssert(activity, "test.html");

Попробуйте, этот метод работает и помогает читать html-файл из папки assert.

 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;
    }
}
person Jey Arun    schedule 05.01.2018