@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub super.onUpdate(context, appWidgetManager, appWidgetIds); Log.i(TAG, "onUpdate"); Intent service = new Intent(context, CalculatorAppWidgetService.class); context.startService(service); for (int i = 0; i < appWidgetIds.length; i++) { RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.widget_main); if (appWidgetIds[appWidgetIds.length - 1] > theMaxWidgetID) { theMaxWidgetID = appWidgetIds[appWidgetIds.length - 1]; CalculatorWidgetEntity entity = new CalculatorWidgetEntity(); entity.setView(view); entity.setViewId(appWidgetIds[i]); entity.setFormula(""); entity.setResult(""); mEntities.add(entity); } updateWidget(context, view, appWidgetIds[i]); appWidgetManager.updateAppWidget(appWidgetIds, view); } }
public int evaluate(String expr) { if (expr.equalsIgnoreCase("")) { return EMPTY; } entity.setFormula(mTokenizer.getLocalizedExpression(expr)); expr = mTokenizer.getNormalizedExpression(expr); while (expr.length() > 0 && ".+-/*".indexOf(expr.charAt(expr.length() - 1)) != -1) { expr = expr.substring(0, expr.length() - 1); } try { double result = mSymbols.eval(expr); if (Double.isNaN(result)) { return NAN; // "NaN"; } else { entity.setResult( mTokenizer.getLocalizedExpression( Util.doubleToString(result, MAX_DIGITS, ROUNDING_DIGITS))); return RESULT; // "result"; } } catch (SyntaxException e) { return SYNTAX; // "syntax"; } }