Je suis assez nouveau pour Android Développement et viens de tomber sur Préférences. J'ai trouvé PreferenceScreens et je voulais créer une fonctionnalité de connexion avec celle-ci. Le seul problème que je ne connais pas est chaud Vous pouvez ajouter un bouton "Connexion" à l'écran Préférences. Voici à quoi ressemble ma vue Préférences:
<PreferenceScreen xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
<PreferenceScreen Android:title="@string/login" Android:key="Login">
<EditTextPreference Android:persistent="true" Android:title="@string/username" Android:key="Username"></EditTextPreference>
<EditTextPreference Android:title="@string/password" Android:persistent="true" Android:password="true" Android:key="Password"></EditTextPreference>
</PreferenceScreen>
...
</PreferenceScreen>
Le bouton devrait être juste sous les deux ExitTextPreferences.
Existe-t-il une solution simple à ce problème? La solution que j'ai trouvée ne fonctionnait pas car j'utilise des écrans de préférences sous.
J'ai compris que je pouvais ajouter des boutons de cette façon:
<PreferenceScreen Android:title="@string/login" Android:key="Login">
<EditTextPreference Android:persistent="true" Android:title="@string/username" Android:key="Username"></EditTextPreference>
<EditTextPreference Android:title="@string/password" Android:persistent="true" Android:password="true" Android:key="Password"></EditTextPreference>
<Preference Android:layout="@layout/loginButtons" Android:key="loginButtons"></Preference>
</PreferenceScreen>
et le fichier de disposition (loginButtons.xml) a cette apparence:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:weightSum="10"
Android:baselineAligned="false" Android:orientation="horizontal">
<Button Android:text="Login" Android:layout_width="fill_parent"
Android:layout_weight="5" Android:layout_height="wrap_content"
Android:id="@+id/loginButton" Android:layout_gravity="left"></Button>
<Button Android:text="Password?" Android:layout_width="fill_parent"
Android:layout_weight="5" Android:layout_height="wrap_content"
Android:id="@+id/forgottenPasswordButton"></Button>
</LinearLayout>
Alors maintenant, les boutons apparaissent mais je ne peux pas y accéder en code. Je l'ai essayé avec findViewById () mais cela renvoie null. Des idées comment je pourrais accéder à ces boutons?
Pour le xml:
<Preference Android:title="Acts like a button"
Android:key="@string/myCoolButton"
Android:summary="This is a cool button"/>
Ensuite, pour le Java dans votre onCreate()
)
Preference button = findPreference(getString(R.string.myCoolButton));
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//code for what you want it to do
return true;
}
});
Cela apparaîtra comme une préférence normale, avec juste un titre et un résumé, donc ça ressemblera à ça.
Edit: J'ai changé pour utiliser @string/myCoolButton
Et getString(R.string.myCoolButton)
parce qu'il est préférable d'utiliser des ressources pour l'aide du compilateur, la traduction de la langue et la facilité de modification des chaînes.
Je voulais ajouter un lien de sortie aux préférences et pouvais modifier le code de Jakar pour qu'il fonctionne comme ceci:
<PreferenceScreen xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<PreferenceCategory Android:title="Settings">
<Preference Android:title="Click to exit" Android:key="exitlink"/>
</PreferenceCategory>
</PreferenceScreen>
A l’origine, la "préférence" était une "EditTextPreference" que j’ai modifiée.
Puis en classe:
public class MyPreferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.mypreferences);
Preference button = (Preference)getPreferenceManager().findPreference("exitlink");
if (button != null) {
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
finish();
return true;
}
});
}
}
}
Je suppose que c'est trop tard. C'est ce que j'ai fait pour une préférence de bouton.
La préférence dans le fichier preference.xml du dossier xml
....
<Preference
Android:key="resetBD"
Android:title="@string/ajustes_almacenamiento"
Android:summary="@string/ajustes_almacenamiento_desc"
Android:widgetLayout="@layout/pref_reset_bd_button"
></Preference>
...
et pref_reset_bd_button.xml dans le dossier de présentation
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/resetButton"
Android:text="@string/ajustes_almacenamiento_bt"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:onClick="resetearBD">
</Button>
Ajouter
setContentView(R.layout.buttonLayout);
Au dessous de
addPreferencesFromResource(R.xml.yourPreference);
disposition des boutons:
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<RelativeLayout
Android:id="@+id/top_control_bar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
</RelativeLayout>
<LinearLayout
Android:id="@+id/bottom_control_bar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true">
<Button
Android:id="@+id/button"
Android:layout_width="match_parent"
Android:layout_height="70dp"
Android:text="@string/saveAlarm"/>
</LinearLayout>
<ListView
Android:id="@Android:id/list"
Android:layout_width="fill_parent"
Android:layout_height="0dip"
Android:layout_above="@id/bottom_control_bar"
Android:layout_below="@id/top_control_bar"
Android:choiceMode="multipleChoice">
</ListView>
Bouton d'accès par:
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Your event
}
});
Vous pouvez obtenir le bouton en haut ou en bas de l'écran en le mettant dans RelativeLayout:
bottom_control_bar
Cela a fonctionné pour moi. J'espère que je peux aider quelqu'un avec ce morceau de code.
Je ne pense pas qu’il existe un moyen simple d’ajouter un bouton à un écran de préférences. Les préférences sont limitées à:
EditTextPreference
ListPreference
RingtonePreference
CheckboxPreference
Lorsque vous utilisez un écran de préférences, vous êtes limité à l’utilisation de ces options et il n’existe pas de "préférence de bouton" unique qui puisse être facilement utilisée pour vos besoins.
Je recherchais des fonctionnalités similaires, avec l'ajout de boutons à l'écran de préférences, mais il semble que vous deviez créer votre propre écran pour cela, en gérant le changement des préférences dans votre propre implémentation.
Vous pouvez le faire comme ceci pour accéder au bouton!
View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layoutButtons, null, false);
N'oubliez pas d'ajouter Android:id
au LinearLayout contenant le bouton dans layoutButtons.xml, c’est-à-dire Android:id="@+id/mylayout"
LinearLayout mLayout = (LinearLayout) footerView.findViewById(R.id.mylayout);
Button login = (Button) footerView.findViewById(R.id.loginButton);
login.setOnClickListener(this);
ListView lv = (ListView) findViewById(Android.R.id.list);
lv.addFooterView(footerView);
// Lines 2 and 3 can be used in the same way for a second Button!
Vous pouvez également personnaliser la présentation d'une préférence en remplaçant Preference.onCreateView(parent)
. L'exemple ci-dessous utilise une classe interne anonyme pour définir les préférences en rouge.
screen.addPreference(
new Preference(context) {
@Override
protected View onCreateView(ViewGroup parent) {
View view = super.onCreateView(parent);
view.setBackgroundColor(Color.RED);
return view;
}
});
Vous pouvez utiliser cette technique pour ajouter un bouton à la vue par défaut.
essayez Android: onClick = "myMethod" fonctionne comme un charme pour les événements onClick simples