package andevcon14.FragmentCommsSupport.Types.LocalBroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.content.LocalBroadcastManager; import android.view.View; import android.widget.Button; import android.widget.TextView; import andevcon14.FragmentCommsSupport.R; public class LocalBroadcastActivity extends FragmentActivity { private static final String COUNTER_KEY = "COUNTER_KEY"; private Counter counter = null; private BroadcastReceiver countReceiver, updateReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.local_broadcast); Button minusButton = (Button) findViewById(R.id.minusButton); Button plusButton = (Button) findViewById(R.id.plusButton); final TextView count = (TextView) findViewById(R.id.count); if (savedInstanceState != null) { counter = (Counter) savedInstanceState.getSerializable(COUNTER_KEY); } else { counter = new Counter(); LocalBroadcastFragment fragment = new LocalBroadcastFragment(); getSupportFragmentManager() .beginTransaction() .add(R.id.right, fragment) .commit(); } minusButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CounterBroadcastHelper.getInstance() .broadcastUpdate(LocalBroadcastActivity.this, false); } }); plusButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CounterBroadcastHelper.getInstance() .broadcastUpdate(LocalBroadcastActivity.this, true); } }); countReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int newCount = intent.getIntExtra(CounterBroadcastHelper.EXTRA_COUNT, 0); count.setText("" + newCount); } }; updateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { boolean isPlus = intent.getBooleanExtra(CounterBroadcastHelper.EXTRA_IS_PLUS,true); counter.update(isPlus); CounterBroadcastHelper.getInstance() .broadcastCount(LocalBroadcastActivity.this,counter.getCount()); } }; } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable(COUNTER_KEY, counter); } @Override protected void onPause() { super.onPause(); LocalBroadcastManager.getInstance(this) .unregisterReceiver(countReceiver); LocalBroadcastManager.getInstance(this) .unregisterReceiver(updateReceiver); } @Override protected void onResume() { super.onResume(); LocalBroadcastManager.getInstance(this) .registerReceiver( countReceiver, CounterBroadcastHelper.getInstance().getReportIntentFilter()); LocalBroadcastManager.getInstance(this) .registerReceiver( updateReceiver, CounterBroadcastHelper.getInstance().getUpdateIntentFilter()); } @Override protected void onPostResume() { super.onPostResume(); CounterBroadcastHelper.getInstance() .broadcastCount(this, counter.getCount()); } }