summaryrefslogtreecommitdiff
path: root/src/ui/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/android')
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java15
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/Translator.java8
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<Void,Void,Void>() {
- @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);