/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    if (DEBUG) {
      Log.d(TAG, "onCreate(" + savedInstanceState + ")");
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mCelsius = (EditNumber) findViewById(R.id.celsius);
    mFahrenheit = (EditNumber) findViewById(R.id.fahrenheit);

    mCelsius.addTextChangedListener(
        new TemperatureChangeWatcher(mCelsius, mFahrenheit) {

          @Override
          protected double convert(double temp) {
            return TemperatureConverter.celsiusToFahrenheit(temp);
          }
        });

    mFahrenheit.addTextChangedListener(
        new TemperatureChangeWatcher(mFahrenheit, mCelsius) {

          @Override
          protected double convert(double temp) {
            return TemperatureConverter.fahrenheitToCelsius(temp);
          }
        });

    if (savedInstanceState != null) {
      if (savedInstanceState.containsKey(CELSIUS_KEY)) {
        final double c = savedInstanceState.getDouble(CELSIUS_KEY);
        final double f = TemperatureConverter.celsiusToFahrenheit(c);
        if (DEBUG) {
          Log.d(TAG, "onCreate: restoring celsius: " + c);
        }
        mCelsius.setNumber(c);
        mFahrenheit.setNumber(f);
      } else if (savedInstanceState.containsKey(FAHRENHEIT_KEY)) {
        final double f = savedInstanceState.getDouble(FAHRENHEIT_KEY);
        final double c = TemperatureConverter.fahrenheitToCelsius(f);
        if (DEBUG) {
          Log.d(TAG, "onCreate: restoring fahrenheit: " + f);
        }
        mFahrenheit.setNumber(f);
        mCelsius.setNumber(c);
      }
    }

    mCelsius.setOnFocusChangeListener(mTemperatureEntryFocusChangeListener);
    mFahrenheit.setOnFocusChangeListener(mTemperatureEntryFocusChangeListener);
  }