2017-02-09 156 views
0
import android.widget.Toast; 
import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

public void bEqual(View v) throws ScriptException { 

     ScriptEngineManager mgr = new ScriptEngineManager(); 
     ScriptEngine engine = mgr.getEngineByName("JavaScript"); 
     String value = inputText.getText().toString(); 
     Toast.makeText(this,value,Toast.LENGTH_LONG).show(); 
     try{ 
      result = (double)engine.eval(value); 
      Toast.makeText(this,String.format("%f",result),Toast.LENGTH_SHORT).show(); 
     }catch(Exception e){ 
      Toast.makeText(this,"Exception Raised",Toast.LENGTH_SHORT).show(); 
     } 

    } 

有什么不对呢?执行此操作时,应用程序正在退出。 它没有显示任何错误,但应用程序正在关闭如何在Android中使用ScriptEngineManager?

回答

1

javax.script程序包在Android上不可用。

如果你想使用Javascript引擎,你必须自己实现这些行为,或者使用已经存在像rhino-android依赖项之一。

4

首先加入: 将'io.apisense:rhino-android:1.0' 编译为您的应用程序gradle文件。 然后输入此代码段

TextView resultTextView = findViewById(R.id.result_text_view); 
    String currentText = resultTextView.getText().toString(); 
    boolean valid = checkForValidity(); 
    double result=0; 
    if(valid){ 
     ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino"); 
     try{ 
      result = (double)engine.eval(currentText); 
     }catch(Exception e){ 
      Toast.makeText(this,"Exception Raised",Toast.LENGTH_SHORT).show(); 
     } 
     currentText = currentText +"\n"+ "="+(result); 
    } 
    resultTextView.setText(currentText); 
相关问题