From 2780ea839b0424dd27a69faadfd42e0297829ef3 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Mon, 7 Oct 2013 11:50:58 +0000 Subject: [PATCH] ensure that the grammar is loaded only once even if the main activity is recreated --- .../ui/android/MainActivity.java | 15 ++++++--------- .../ui/android/Translator.java | 8 ++++---- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java b/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java index fba9987d6..1e5f8c06e 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java @@ -34,7 +34,9 @@ public class MainActivity extends Activity { private TTS mTts; - private Translator mTranslator; + // mTranslator is static to ensure that the grammar + // is loaded only once even if the activity has been recreated. + private static Translator mTranslator; @Override protected void onCreate(Bundle savedInstanceState) { @@ -65,14 +67,9 @@ public class MainActivity extends Activity { mTts = new TTS(this); - mTranslator = new Translator(this); - new AsyncTask() { - @Override - protected Void doInBackground(Void... params) { - mTranslator.init(); - return null; - } - }.execute(); + if (mTranslator == null) { + mTranslator = new Translator(this); + } mSourceLanguageView.setLanguages(mTranslator.getAvailableSourceLanguages()); mSourceLanguageView.setSelectedLanguage(mTranslator.getSourceLanguage()); diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index 1d6e081e8..1bf5eb1a3 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -71,10 +71,10 @@ public class Translator { */ public String translate(String input) { try { - Concr sourceGrammar = getConcr(getSourceLanguage().getConcrete()); - Expr expr = sourceGrammar.parseBest("S", input); - Concr targetGrammar = getConcr(getTargetLanguage().getConcrete()); - String output = targetGrammar.linearize(expr); + Concr sourceLang = getConcr(getSourceLanguage().getConcrete()); + Expr expr = sourceLang.parseBest(getGrammar().getStartCat(), input); + Concr targetLang = getConcr(getTargetLanguage().getConcrete()); + String output = targetLang.linearize(expr); return output; } catch (ParseError e) { Log.e(TAG, "Parse error: " + e);