package andevcon14.FragmentCommsSupport.Types.ObserverPattern; import android.support.v4.app.FragmentActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import andevcon14.FragmentCommsSupport.R; public class ObserverPatternActivity extends FragmentActivity implements Counter.Observer, MinusPlusButtonInterface { private static final String COUNTER_KEY = "COUNTER_KEY"; private Button minusButton, plusButton; private TextView count; private Counter counter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.observer_pattern); minusButton = (Button) findViewById(R.id.minusButton); plusButton = (Button) findViewById(R.id.plusButton); count = (TextView) findViewById(R.id.count); if (savedInstanceState != null) { counter = (Counter) savedInstanceState.getSerializable(COUNTER_KEY); } else { counter = new Counter(); ObserverPatternFragment fragment = new ObserverPatternFragment(); getSupportFragmentManager() .beginTransaction() .add(R.id.right, fragment) .commit(); } minusButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onMinusButton(view); } }); plusButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onPlusButton(view); } }); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable(COUNTER_KEY, counter); } @Override protected void onPause() { super.onPause(); counter.unRegister(this); counter.unRegister( (Counter.Observer) getSupportFragmentManager() .findFragmentById(R.id.left)); counter.unRegister( (Counter.Observer) getSupportFragmentManager() .findFragmentById(R.id.right)); } @Override protected void onResume() { super.onResume(); counter.register(this); counter.register( (Counter.Observer) getSupportFragmentManager() .findFragmentById(R.id.left)); counter.register( (Counter.Observer) getSupportFragmentManager() .findFragmentById(R.id.right)); } @Override public void onCount(int count) { this.count.setText(""+count); } @Override public void onMinusButton(View view) { counter.update(false); } @Override public void onPlusButton(View view) { counter.update(true); } }