Please follow this previus tutorial... I think you have your strings.xml right now the themes and the settings.xml
Right now we will only create an activity file....
In your MainActivity.java copy this code before super.onCreate(savedInstanceState);:
SharedPreferences pref = PreferenceManager
.getDefaultSharedPreferences(this);
String themeName = pref.getString("prefSyncFrequency3", "Theme1");
if (themeName.equals("Africa")) {
setTheme(R.style.AppTheme);
} else if (themeName.equals("Colorful Beach")) {
//Toast.makeText(this, "set theme", Toast.LENGTH_SHORT).show();
setTheme(R.style.beach);
} else if (themeName.equals("Abstract")) {
//Toast.makeText(this, "set theme", Toast.LENGTH_SHORT).show();
setTheme(R.style.abstract2);
} else if (themeName.equals("Default")) {
setTheme(R.style.defaulttheme);
}
After that create a new class and named it, UserSettingActivity:
Here's the code:
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.Preference.OnPreferenceChangeListener;
import android.view.MenuItem;
import android.widget.Toast;
public class UserSettingActivity extends PreferenceActivity {
public static final int RESULT_CODE_THEME_UPDATED = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences pref = PreferenceManager
.getDefaultSharedPreferences(this);
String themeName = pref.getString("prefSyncFrequency3", "Theme1");
if (themeName.equals("Africa")) {
setTheme(R.style.AppTheme);
} else if (themeName.equals("Colorful Beach")) {
//Toast.makeText(this, "set theme", Toast.LENGTH_SHORT).show();
setTheme(R.style.beach);
} else if (themeName.equals("Abstract")) {
//Toast.makeText(this, "set theme", Toast.LENGTH_SHORT).show();
setTheme(R.style.abstract2);
} else if (themeName.equals("Default")) {
setTheme(R.style.defaulttheme);
}
//Toast.makeText(this, "Theme has been reset to " + themeName,
// Toast.LENGTH_SHORT).show();
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
getActionBar().setTitle("Settings");
getActionBar().setDisplayHomeAsUpEnabled(true);
addPreferencesFromResource(R.xml.settings);
findPreference("prefSyncFrequency3").setOnPreferenceChangeListener(new RefershActivityOnPreferenceChangeListener(RESULT_CODE_THEME_UPDATED));
}
public class RefershActivityOnPreferenceChangeListener implements OnPreferenceChangeListener {
private final int resultCode;
public RefershActivityOnPreferenceChangeListener(int resultCode) {
this.resultCode = resultCode;
}
@Override
public boolean onPreferenceChange(Preference p, Object newValue) {
setResult(resultCode);
return true;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
finish();
break;
}
}
return super.onOptionsItemSelected(item);
}
}
And in AndroidManifest never forget to call UserSettingActivity:
Note: That is my case.
HAPPY CODING!
never forget to comment below of you are having errors...