Android Programming The Big Nerd Ranch Guide by Bill Phillips, Chris Stewart, Kristin Marsicano (z-lib.org)

(gtxtreme123) #1

Chapter 17  Two-Pane Master-Detail Interfaces


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