2017-02-09 6 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

最初にこれを追加してください: あなたのアプリのgradleファイルに 'io.apisense:rhino-android:1.0' をコンパイルしてください。 次にこのスニペットコードを入力してください

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); 
関連する問題