Android Programming The Big Nerd Ranch Guide, 3rd Edition

(Brent) #1

Chapter 17  Two-Pane Master-Detail Interfaces


332

Now implement CrimeFragment.Callbacks in CrimeListActivity to reload the list in
onCrimeUpdated(Crime).


Listing 17.12  Refreshing crime list (CrimeListActivity.java)


public class CrimeListActivity extends SingleFragmentActivity
implements CrimeListFragment.Callbacks, CrimeFragment.Callbacks {
...
public void onCrimeUpdated(Crime crime) {
CrimeListFragment listFragment = (CrimeListFragment)
getSupportFragmentManager()
.findFragmentById(R.id.fragment_container);
listFragment.updateUI();
}
}


CrimeFragment.Callbacks must be implemented in all activities that host CrimeFragment. So provide
an empty implementation in CrimePagerActivity, too.


Listing 17.13  Providing empty callbacks implementation
(CrimePagerActivity.java)


public class CrimePagerActivity extends AppCompatActivity
implements CrimeFragment.Callbacks {
...
@Override
public void onCrimeUpdated(Crime crime) {


}
}


CrimeFragment will be doing a Time Warp two-step a lot internally: Jump to the left, save mCrime to
CrimeLab. Step to the right, call mCallbacks.onCrimeUpdated(Crime). Add a method to make it more
convenient to do this jig.


Listing 17.14  Adding updateCrime() method (CrimeFragment.java)


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
...
}


private void updateCrime() {
CrimeLab.get(getActivity()).updateCrime(mCrime);
mCallbacks.onCrimeUpdated(mCrime);
}


private void updateDate() {
mDateButton.setText(mCrime.getDate().toString());
}

Free download pdf