Szerző Téma: Android Studio ScriptEngine  (Megtekintve 1659 alkalommal)

Android Studio ScriptEngine
« Dátum: 2017. december 21. - 21:59:56 »
0 Show voters
Sziasztok!
 
Alapra Android Studioban nincs is ScriptEngine csak külön lib-ként tudtam berakni, de amikor használnám kifagy az app és a hibaüzenet:
 

java.lang.NullPointerException: Attempt to invoke interface method \'java.lang.Object javax.script.ScriptEngine.eval(java.lang.String)\' on a null object reference

 
Egy ideje már baszakszok vele, aki tudja hogy tudnám javítani elmondhatná.
 
 
 

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName(\"JavaScript\");
result = ((Double) engine.eval(currentaction));
display.setText(result.toString());

 
 
« Utoljára szerkesztve: 2017. december 21. - 22:08:00 írta thegergo02 »

Android Studio ScriptEngine
« Válasz #1 Dátum: 2017. december 22. - 02:55:42 »
0 Show voters
Nem használtam még ilyeneket javában. De úgy tűnik nincs JavaScript nevű engined. Úgy olvastam a java 8 ba egy nashorn nevű javascript engine van úgyhogy azt kell getelned.
 
http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/

Android Studio ScriptEngine
« Válasz #2 Dátum: 2017. december 22. - 10:08:13 »
0 Show voters
Köszi amint tudom kipróbálom.

Android Studio ScriptEngine
« Válasz #3 Dátum: 2017. december 22. - 10:19:41 »
0 Show voters
A hiba ugyanaz, szerintem a stringet szétszedem valami forral aztán lesz ami lesz.

Android Studio ScriptEngine
« Válasz #4 Dátum: 2017. december 22. - 10:29:15 »
0 Show voters
Most kipróbáltam én is nekem lefut gond nélkül.
 

   public static void main(String [] args){
        ScriptEngine engine = new ScriptEngineManager().getEngineByName(\"nashorn\");
        try {
            engine.eval(\"print(\'Hi\');\");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

 
Milyen IDE-t használsz?

Android Studio ScriptEngine
« Válasz #5 Dátum: 2017. december 22. - 10:32:45 »
0 Show voters
Idézetet írta: dugasz1 date=1513934955


   
      Most kipróbáltam én is nekem lefut gond nélkül.
   
   

   public static void main(String [] args){
        ScriptEngine engine = new ScriptEngineManager().getEngineByName(\"nashorn\");
        try {
            engine.eval(\"print(\'Hi\');\");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

   
      Milyen IDE-t használsz?
   


Android Studio, de már megtaláltam egy ScriptEngine nélküli megoldást, legalább nem kell növelni az app méretét libraryval.

Android Studio ScriptEngine
« Válasz #6 Dátum: 2017. december 22. - 10:37:46 »
0 Show voters
Mi lett a megoldás? (Tényleg ott a címben is)
« Utoljára szerkesztve: 2017. december 22. - 10:38:17 írta dugasz1 »

Android Studio ScriptEngine
« Válasz #7 Dátum: 2017. december 22. - 10:47:50 »
0 Show voters

               if (currentaction.contains(\"+\")) {
                    String[] array = currentaction.split(\"\\\\+\");
                    result = Double.parseDouble(array[0])+Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"-\")) {
                    String[] array = currentaction.split(\"\\\\-\");
                    result = Double.parseDouble(array[0])-Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"*\")) {
                    String[] array = currentaction.split(\"\\\\*\");
                    result = Double.parseDouble(array[0])*Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"/\")) {
                    String[] array = currentaction.split(\"\\\\/\");
                    result = Double.parseDouble(array[0])/Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else {
                    display.setText(currentaction);
                }

 
Tudom OMFG legalább case-t használnék, de működik.
 
 
« Utoljára szerkesztve: 2017. december 22. - 11:30:04 írta thegergo02 »

Android Studio ScriptEngine
« Válasz #8 Dátum: 2017. december 26. - 02:32:00 »
0 Show voters
Nem teljesen vágom. Nem JavaScript akartál futtatni am?
« Utoljára szerkesztve: 2017. december 26. - 02:35:18 írta dugasz1 »

Android Studio ScriptEngine
« Válasz #9 Dátum: 2017. december 29. - 10:11:15 »
0 Show voters
Azt a próbálkozást már én se nagyon értem.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal