将Java Prettify用于Android应用语法突出显示

Himanshu Jaju

我需要将语法高亮显示集成到我的Android应用程序中。我尝试使用Java Prettify(https://code.google.com/p/java-prettify),但无法集成它。该应用程序崩溃了。而且由于我的avd无法正常工作,因此我无法从logcat获取有关崩溃的信息。

我正在关注以下信息:https : //code.google.com/p/java-prettify/wiki/UseTheParserAlone

到目前为止,我的代码:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import prettify.PrettifyParser;
import syntaxhighlight.ParseResult;
import syntaxhighlight.Parser;

public class PrettifyHighlighter {
Map<String, String> COLORS = buildColorsMap();
String FONT_PATTERN = "<font color=\"#%s\">%s</font>";
Parser parser = new PrettifyParser();

public String highlight(String fileExtension, String sourceCode) {
    StringBuilder highlighted = new StringBuilder();
    List<ParseResult> results = parser.parse(fileExtension, sourceCode);
    for(ParseResult result : results){
        String type = result.getStyleKeys().get(0);
        String content = sourceCode.substring(result.getOffset(), result.getOffset() + result.getLength());
        highlighted.append(String.format(FONT_PATTERN, getColor(type), content));
    }
    return highlighted.toString();
}

private String getColor(String type){
    return COLORS.containsKey(type) ? COLORS.get(type) : COLORS.get("pln");
}

private static Map<String, String> buildColorsMap() {
    Map<String, String> map = new HashMap<String, String>();
    map.put("typ", "87cefa");
    map.put("kwd", "00ff00");
    map.put("lit", "ffff00");
    map.put("com", "999999");
    map.put("str", "ff4500");
    map.put("pun", "eeeeee");
    map.put("pln", "ffffff");
    return map;
}

}

在调试时,我发现在注释以下行时:Parser parser = new PrettifyParser();

和它的相关行,没有崩溃的应用程序。我用谷歌搜索,但没有找到解决方案。

我的logcat:

03-02 07:57:12.300: E/AndroidRuntime(1245): FATAL EXCEPTION: main
03-02 07:57:12.300: E/AndroidRuntime(1245): Process: com.himanshujaju.codeit, PID: 1245
03-02 07:57:12.300: E/AndroidRuntime(1245): java.lang.NoClassDefFoundError: prettify.PrettifyParser
03-02 07:57:12.300: E/AndroidRuntime(1245):     at com.himanshujaju.codeit.PrettifyHighlighter.<init>(PrettifyHighlighter.java:14)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at com.himanshujaju.codeit.codeArea$Run.onPostExecute(codeArea.java:193)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at com.himanshujaju.codeit.codeArea$Run.onPostExecute(codeArea.java:1)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.os.AsyncTask.finish(AsyncTask.java:632)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.os.Looper.loop(Looper.java:137)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at android.app.ActivityThread.main(ActivityThread.java:4998)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at java.lang.reflect.Method.invokeNative(Native Method)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at java.lang.reflect.Method.invoke(Method.java:515)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
03-02 07:57:12.300: E/AndroidRuntime(1245):     at dalvik.system.NativeStart.main(Native Method)
R4j

我尝试了您的代码,效果很好。

  PrettifyHighlighter highlighter = new PrettifyHighlighter();
  String code = "for (int i = 0; i < 5; i++){System.out.println(i);}";
  String highlighted = highlighter.highlight("java", code);
  textView1.setText(Html.fromHtml(highlighted));

这是模拟器上的输出Textview

强调

作为NoClassDefFoundError例外,看起来eclipse在构建时不会导出jar库。试试这个答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Studio Java语法突出显示不起作用

来自分类Dev

具有Prettify的自动语法突出显示

来自分类Dev

具有Prettify的自动语法突出显示

来自分类Dev

Intellij 缺少 Java 的语法突出显示

来自分类Dev

仅将功能应用于突出显示的单元格

来自分类Dev

第一行后将Textarea主题标签突出显示应用于错误的位置

来自分类Dev

将语法突出显示添加到IElisonBuffer

来自分类Dev

使用Vim将文件语法突出显示为HTML

来自分类Dev

IntelliJ IDEA-Java内部Java代码的语法突出显示

来自分类Dev

用于将引用语法翻译为HTML的正则表达式

来自分类Dev

Java:将BufferedImage应用于BufferStrategy

来自分类Dev

具有Java语法突出显示功能的Emacs组织模式?

来自分类Dev

Vim中Java的语法突出显示更好吗?

来自分类Dev

如何在文本视图中突出显示 Java 语法?

来自分类Dev

在Slate中禁用语法错误突出显示

来自分类Dev

如何在nano中启用语法突出显示?

来自分类Dev

如何在Ranger预览中启用语法突出显示?

来自分类Dev

如何在nano中启用语法突出显示?

来自分类Dev

如何在PowerShell Core中启用语法突出显示?

来自分类Dev

在Slate中禁用语法错误突出显示

来自分类Dev

将JetCreator用于Android应用

来自分类Dev

如何使vim将/ var / log / messages语法高亮显示应用于任何称为“ messages”或“ messages- *”的文件?

来自分类Dev

将FFT应用于Java中的音频录制

来自分类Dev

无法将Sea Glass LAF用于Java应用程序

来自分类Dev

将函数应用于Java中的while循环

来自分类Dev

将泛型应用于java.util.Function

来自分类Dev

从.Net将TripleDES算法应用于Java时出错

来自分类Dev

Java:将概率约束应用于Random()

来自分类Dev

如何将.hl文件与Light Table中的Clojure语法突出显示关联?

Related 相关文章

  1. 1

    Android Studio Java语法突出显示不起作用

  2. 2

    具有Prettify的自动语法突出显示

  3. 3

    具有Prettify的自动语法突出显示

  4. 4

    Intellij 缺少 Java 的语法突出显示

  5. 5

    仅将功能应用于突出显示的单元格

  6. 6

    第一行后将Textarea主题标签突出显示应用于错误的位置

  7. 7

    将语法突出显示添加到IElisonBuffer

  8. 8

    使用Vim将文件语法突出显示为HTML

  9. 9

    IntelliJ IDEA-Java内部Java代码的语法突出显示

  10. 10

    用于将引用语法翻译为HTML的正则表达式

  11. 11

    Java:将BufferedImage应用于BufferStrategy

  12. 12

    具有Java语法突出显示功能的Emacs组织模式?

  13. 13

    Vim中Java的语法突出显示更好吗?

  14. 14

    如何在文本视图中突出显示 Java 语法?

  15. 15

    在Slate中禁用语法错误突出显示

  16. 16

    如何在nano中启用语法突出显示?

  17. 17

    如何在Ranger预览中启用语法突出显示?

  18. 18

    如何在nano中启用语法突出显示?

  19. 19

    如何在PowerShell Core中启用语法突出显示?

  20. 20

    在Slate中禁用语法错误突出显示

  21. 21

    将JetCreator用于Android应用

  22. 22

    如何使vim将/ var / log / messages语法高亮显示应用于任何称为“ messages”或“ messages- *”的文件?

  23. 23

    将FFT应用于Java中的音频录制

  24. 24

    无法将Sea Glass LAF用于Java应用程序

  25. 25

    将函数应用于Java中的while循环

  26. 26

    将泛型应用于java.util.Function

  27. 27

    从.Net将TripleDES算法应用于Java时出错

  28. 28

    Java:将概率约束应用于Random()

  29. 29

    如何将.hl文件与Light Table中的Clojure语法突出显示关联?

热门标签

归档