Can I make the action bar's "up" navigation trigger a confirmation dialogfragment that says "Are you sure you would like to go back?"
Intercepting the up
ActionBar button press is trivial because everything is done through onOptionsItemSelected
. The documentation, recommends that you use android.R.id.home
to go up with NavUtils
(provided that you set the metadata for the parent activity so NavUtils
doesn't throw an Exception, etc):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Your DialogFragment
should offer an confirmation to actually go back. Since you're now working with the Fragment
and not the Activity
, you're going to want to pass getActivity()
to NavUtils
.
NavUtils.navigateUpFromSameTask(getActivity());
and change onOptionsItemSelected()
to
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
new ConfirmationDialog().show(getSupportFragmentManager(), "confirmation_dialog");
return true;
}
return super.onOptionsItemSelected(item);
}
ConfirmationDialog
is your custom DialogFragment
.
Note that for this example, I am using the support
Fragment
APIs,. If you are not, make sure to change getSupportFragmentManager()
to getFragmentManager()
.