package com.shaweibo.biu.ui.setting;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.FragmentManager;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.shaweibo.biu.R;
import com.shaweibo.biu.ui.common.BaseActivity;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class SettingsActivity extends BaseActivity {
public static final int SETTING_LOG_OUT = -1;
private SettingsFragment mSettingsFragment;
@InjectView(R.id.toolbar)
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ButterKnife.inject(this);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null) {
mSettingsFragment = new SettingsFragment();
replaceFragment(R.id.settings_container, mSettingsFragment);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void replaceFragment(int viewId, android.app.Fragment fragment) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(viewId, fragment).commit();
}
/**
* A placeholder fragment containing a settings view.
*/
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
Preference avatarPreference=findPreference("avatar_hd");
bindPreferenceSummaryToValue(avatarPreference);
boolean value= PreferenceManager
.getDefaultSharedPreferences(avatarPreference.getContext())
.getBoolean("avatar_hd", false);
sBindPreferenceSummaryToValueListener.onPreferenceChange(avatarPreference, value
);
Preference picPreference=findPreference("pic_quantity");
bindPreferenceSummaryToValue(picPreference);
String picQuantity= PreferenceManager
.getDefaultSharedPreferences(picPreference.getContext())
.getString("pic_quantity", "");
sBindPreferenceSummaryToValueListener.onPreferenceChange(picPreference, picQuantity);
findPreference("about").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return true;
}
});
findPreference("logout").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent();
intent.putExtra("opt", SETTING_LOG_OUT);
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
return true;
}
});
}
}
private static void bindPreferenceSummaryToValue(Preference preference) {
// Set the listener to watch for value changes.
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
// Trigger the listener immediately with the preference's
// current value.
}
/**
* A preference value change listener that updates the preference's summary
* to reflect its new value.
*/
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String key =preference.getKey();
if(key.equals("avatar_hd")){
preference.setDefaultValue(value);
}
else if (key.equals("pic_quantity")){
String stringValue = value.toString();
// For list preferences, look up the correct display value in
// the preference's 'entries' list.
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue(stringValue);
// Set the summary to reflect the new value.
preference.setSummary(listPreference.getEntries()[index]);
}
else {
if(value instanceof String){
String stringValue = value.toString();
preference.setSummary(stringValue);
}
}
return true;
}
};
}