Préférence de la liste, comment faire quelque chose lorsque la préférence est cliquée
-
12-12-2019 - |
Question
ok donc chaque poste que je trouve je ne peux pas obtenir cela pour travailler, j'essaie de faire de la préférence de ma liste
ParamètresBasic.xml
<ListPreference
android:title="themes"
android:summary="Select the option of the list"
android:key="listPref"
android:entries="@array/Themes"
android:entryValues="@array/list"
android:defaultValue="default" />
À propos de ce que vous pouvez voir ci-dessus, c'est mon fichier ListPrreference dans mon fichier ParamètresBasic.xml. Maintenant, ce que j'ai besoin de savoir comment faire est que j'ai 2 fichiers Java, mon activité principale. et mes préférences fichier java. J'ai besoin de savoir comment je peux quand l'utilisateur clique sur l'une des entrées qu'il fait quelque chose, aime ouvrir quelque chose ou change l'interface utilisateur, juste quelque chose que je pense que je peux le prendre à partir de là. J'ai juste besoin de savoir comment et où le code irait. à l'intérieur de l'activité principale d'acité ou de préférence.
Voici mon fichier java préféré
public class Prefs extends PreferenceActivity {
ListPreference listPref;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settingsbasic);
}
protected void onResume() {
super.onResume();
// Registers a callback to be invoked whenever a user changes a preference.
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
protected void onPause() {
super.onPause();
// Unregisters the listener set in onResume().
// It's best practice to unregister listeners when your app isn't using them to cut down on
// unnecessary system overhead. You do this in onPause().
getPreferenceScreen()
.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Sets refreshDisplay to true so that when the user returns to the main
// activity, the display refreshes to reflect the new settings.
WebViewClientDemoActivity.????? = true;
}
}
Tout exemple de code aiderait ou ajouter à mon code ci-dessus. J'ai juste besoin de quelqu'un qui peut éclairer ce code. J'ai essayé tant de choses différentes et aucune de cela ne fonctionne.
OK, en utilisant la méthode de l'application exemple recommandée ci-dessous, voici quelques autres code que j'ai.
Main Activity
public class WebViewClientDemoActivity extends Activity {
public static String sPref = null;
public void onStart() {
super.onStart();
// Gets the user's network preference settings
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
// Retrieves a string value for the preferences. The second parameter
// is the default value to use if a preference value is not found.
sPref = sharedPrefs.getString("listPref", "Default");
}
La solution
C'est la façon dont j'ai utilisé la préfecture de préfenciation:
public class EditPrefs extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.screen_prefs);
}
}
Ensuite, Dossier In / Res / XML J'ai le fichier XML:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="txtColor"
android:title="textView Color"
android:summary="select color for textViews"
android:entries="@array/txtColor"
android:entryValues="@array/txtColorValues" />
</PreferenceScreen>
et in / Res / Res / Valeurs J'ai ce fichier XML inclut des éléments et leurs valeurs:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="txtColor">
<item>blue</item>
<item>brown</item>
<item>gray</item>
<item>violet</item>
</string-array>
<string-array name="txtColorValues">
<item>#ff000099</item>
<item>#5F1E02</item>
<item>#333333</item>
<item>#421C52</item>
</string-array>
</resources>
Puis j'appelle facilement cette classe d'une autre classe Android par exemple lorsque l'utilisateur clique sur un élément de menu:
startActivity(new Intent(this, EditPrefs.class));
Vous pouvez appeler les préférences sur Oncreate et OnResume comme:
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String txtColor = prefs.getString("txtColor", DEFAULT COLOR); // for instanse : #ff000099
textView.setBackgroundColor(Color.parseColor(txtColor));
}
Autres conseils
J'ai résolu ma question de la question.
PREFS
public static String theme = "Theme1";
@Override
public void onBackPressed() {
ListPreference listPreference = (ListPreference) findPreference("listPref");
String currValue = listPreference.getValue();
theme = currValue;
super.onBackPressed();
}
Activité principale
if (Prefs.theme.equals("Theme1"))
setContentView(R.layout.main);
else
setContentView(R.layout.main2);
Préférence XML
<ListPreference
android:title="themes"
android:summary="Select the option of the list"
android:key="listPref"
android:entries="@array/listReturnValue"
android:entryValues="@array/listDisplayWord" />