전위표현식 또는 후위표현식으로 하다 특정 계산에서 에러나는 부분이 많아
스크립트 엔진을 이용하여 자바스크립트를 사용하기로 했다.
Rhino가 필요
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Download_Rhino
압축파일 내의 js.jar 파일을 프로젝트 라이브러리에 추가해준다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | String string = "3×3÷3"; String tmp = string; string = string.replaceAll("×", "*"); string = string.replaceAll("÷", "/"); Context rhino = Context.enter(); rhino.setOptimizationLevel(-1); try { Scriptable scope = rhino.initStandardObjects(); Object obj = rhino.evaluateString(scope, string, "JavaScript", 1, null); String result = obj.toString(); mEditText.setText(tmp + "=" + result); } finally { Context.exit(); } | cs |
문자열을 입력받아 자바스크립트로 동작시킨다.
주의점은 Context가 org.mozilla.javascript.Context 이므로 android.content.Context를 사용할 때는 둘중하나를 풀 경로로 써줘야 한다는 점이다.
edittext에 자바스크립트를 입력하면 동작하게 되지만, 계산기만으로 쓸것이기때문에 edittext의 inputType을 number로 하고 기호들은 버튼으로만 입력받도록 하면 큰 문제는 없을 듯 하다.
아니면 모두 버튼으로만 입력받게 textview로 만들던가...
'안드로이드 프로그래밍' 카테고리의 다른 글
안드로이드 OnItemSelectedListener의 변수명이 이상할 때 (0) | 2017.12.27 |
---|---|
안드로이드 Drawable 형식에 이미지 넣기 (0) | 2017.12.27 |