@Override
 protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putString("result", result);
   outState.putChar("lastOp", lastOp);
   outState.putBoolean("isInEquals", isInEquals);
   outState.putSerializable("stack", stack.toArray(new String[stack.size()]));
 }
 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
   super.onRestoreInstanceState(savedInstanceState);
   result = savedInstanceState.getString("result");
   lastOp = savedInstanceState.getChar("lastOp");
   isInEquals = savedInstanceState.getBoolean("isInEquals");
   stack = new Stack<String>();
   stack.addAll(Arrays.asList((String[]) savedInstanceState.getSerializable("stack")));
   if (lastOp != '\0' && !isInEquals) tvOp.setText(String.valueOf(lastOp));
   tvResult.setText(result);
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.calculator);

    // vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

    for (int id : buttons) {
      Button b = (Button) findViewById(id);
      b.setOnClickListener(this);
    }

    tvResult = (TextView) findViewById(R.id.result);
    tvOp = (TextView) findViewById(R.id.op);

    Button b = (Button) findViewById(R.id.bOK);
    b.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View arg0) {
            if (!isInEquals) {
              doEqualsChar();
            }
            close();
          }
        });
    b = (Button) findViewById(R.id.bCancel);
    b.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View arg0) {
            setResult(RESULT_CANCELED);
            finish();
          }
        });

    Intent intent = getIntent();
    if (intent != null) {
      BigDecimal amount = (BigDecimal) intent.getSerializableExtra(KEY_AMOUNT);
      if (amount != null) {
        setDisplay(amount.toPlainString());
      }
    }
  }