Fixed up-/back-button behavior in PreferenceActivity. fixes #412, fixes #107

This commit is contained in:
daniel oeh 2014-06-01 17:56:35 +02:00
parent d08888300a
commit e715a43ac9

View File

@ -15,6 +15,7 @@ import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.support.v4.app.NavUtils;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -89,7 +90,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
return true; return true;
} }
}); }
);
findPreference(PREF_FLATTR_REVOKE).setOnPreferenceClickListener( findPreference(PREF_FLATTR_REVOKE).setOnPreferenceClickListener(
new OnPreferenceClickListener() { new OnPreferenceClickListener() {
@ -101,7 +103,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
return true; return true;
} }
}); }
);
findPreference(PREF_ABOUT).setOnPreferenceClickListener( findPreference(PREF_ABOUT).setOnPreferenceClickListener(
new OnPreferenceClickListener() { new OnPreferenceClickListener() {
@ -113,7 +116,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
return true; return true;
} }
}); }
);
findPreference(PREF_OPML_EXPORT).setOnPreferenceClickListener( findPreference(PREF_OPML_EXPORT).setOnPreferenceClickListener(
new OnPreferenceClickListener() { new OnPreferenceClickListener() {
@ -125,7 +129,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
return true; return true;
} }
}); }
);
findPreference(PREF_CHOOSE_DATA_DIR).setOnPreferenceClickListener( findPreference(PREF_CHOOSE_DATA_DIR).setOnPreferenceClickListener(
new OnPreferenceClickListener() { new OnPreferenceClickListener() {
@ -135,10 +140,12 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
startActivityForResult( startActivityForResult(
new Intent(PreferenceActivity.this, new Intent(PreferenceActivity.this,
DirectoryChooserActivity.class), DirectoryChooserActivity.class),
DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED); DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED
);
return true; return true;
} }
}); }
);
findPreference(UserPreferences.PREF_THEME) findPreference(UserPreferences.PREF_THEME)
.setOnPreferenceChangeListener( .setOnPreferenceChangeListener(
new OnPreferenceChangeListener() { new OnPreferenceChangeListener() {
@ -153,7 +160,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
startActivity(i); startActivity(i);
return true; return true;
} }
}); }
);
findPreference(UserPreferences.PREF_ENABLE_AUTODL) findPreference(UserPreferences.PREF_ENABLE_AUTODL)
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
@ -179,7 +187,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
return false; return false;
} }
} }
}); }
);
findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE) findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE)
.setOnPreferenceChangeListener( .setOnPreferenceChangeListener(
new OnPreferenceChangeListener() { new OnPreferenceChangeListener() {
@ -190,7 +199,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
} }
return true; return true;
} }
}); }
);
findPreference(PREF_PLAYBACK_SPEED_LAUNCHER) findPreference(PREF_PLAYBACK_SPEED_LAUNCHER)
.setOnPreferenceClickListener(new OnPreferenceClickListener() { .setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override @Override
@ -343,12 +353,14 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case android.R.id.home: case android.R.id.home:
Intent destIntent = new Intent(this, MainActivity.class);
destIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(destIntent);
finish(); finish();
break; return true;
default: default:
return false; return false;
} }
return true;
} }
@Override @Override
@ -389,7 +401,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
String key = preference.getKey(); String key = preference.getKey();
ArrayList<String> prefValuesList = new ArrayList<String>( ArrayList<String> prefValuesList = new ArrayList<String>(
Arrays.asList(UserPreferences Arrays.asList(UserPreferences
.getAutodownloadSelectedNetworks())); .getAutodownloadSelectedNetworks())
);
boolean newValue = ((CheckBoxPreference) preference) boolean newValue = ((CheckBoxPreference) preference)
.isChecked(); .isChecked();
if (BuildConfig.DEBUG) if (BuildConfig.DEBUG)
@ -407,7 +420,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
UserPreferences.setAutodownloadSelectedNetworks( UserPreferences.setAutodownloadSelectedNetworks(
PreferenceActivity.this, prefValuesList PreferenceActivity.this, prefValuesList
.toArray(new String[prefValuesList .toArray(new String[prefValuesList
.size()])); .size()])
);
return true; return true;
} else { } else {
return false; return false;
@ -461,7 +475,17 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
.setBackgroundDrawable( .setBackgroundDrawable(
this.getWindow().getDecorView() this.getWindow().getDecorView()
.getBackground().getConstantState() .getBackground().getConstantState()
.newDrawable()); .newDrawable()
);
return false; return false;
} }
@Override
public void onBackPressed() {
// The default back button behavior has to be overwritten because changing the theme clears the back stack
Intent destIntent = new Intent(this, MainActivity.class);
destIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(destIntent);
finish();
}
} }