diff options
Diffstat (limited to 'src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java')
-rw-r--r-- | src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java index a7658c8..1d26463 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java @@ -17,9 +17,11 @@ package org.cyanogenmod.wallpapers.photophase.preferences; import android.app.ActionBar; +import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; +import android.view.KeyEvent; import android.view.MenuItem; import org.cyanogenmod.wallpapers.photophase.R; @@ -31,6 +33,8 @@ import java.util.List; */ public class PhotoPhasePreferences extends PreferenceActivity { + private OnBackPressedListener mCallback; + /** * {@inheritDoc} */ @@ -51,6 +55,7 @@ public class PhotoPhasePreferences extends PreferenceActivity { ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); getActionBar().setDisplayHomeAsUpEnabled(true); + mCallback = null; } /** @@ -79,7 +84,9 @@ public class PhotoPhasePreferences extends PreferenceActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: - finish(); + if (mCallback == null || !mCallback.onBackPressed()) { + finish(); + } return true; default: return super.onOptionsItemSelected(item); @@ -89,6 +96,33 @@ public class PhotoPhasePreferences extends PreferenceActivity { /** * {@inheritDoc} */ + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (mCallback == null || !mCallback.onBackPressed()) { + finish(); + } + return true; + } + return super.onKeyUp(keyCode, event); + } + + /** + * {@inheritDoc} + */ + @Override + public void onAttachFragment(Fragment fragment) { + super.onAttachFragment(fragment); + if (fragment instanceof OnBackPressedListener) { + mCallback = (OnBackPressedListener)fragment; + } else { + mCallback = null; + } + } + + /** + * {@inheritDoc} + */ // Do not use @Override because is not part of 4.0.3. Just ignored this advise public boolean isValidFragment(String fragmentName) { return true; |