Comment mettre en œuvre une référence de dialogue de confirmation (oui/non)?
Comment puis-je implémenter une préférence qui affiche un simple dialogue de confirmation oui/non?
Pour un exemple, voir Browser->Setting->Clear Cache
.
4 réponses
C'est un simple dialogue Alerte , Federico vous a donné un site où vous pouvez chercher des choses.
voici un bref exemple de la façon dont un dialogue d'alerte peut être construit.
new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Do you really want to whatever?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_SHORT).show();
}})
.setNegativeButton(android.R.string.no, null).show();
Android est livré avec une classe yesnopreference intégrée qui fait exactement ce que vous voulez (une boîte de dialogue Confirmer avec oui et non options). Voir le code source officiel ici .
malheureusement, il est dans le paquet com.android.internal.preference
, ce qui signifie qu'il fait partie des API privées D'Android et que vous ne pouvez pas y accéder depuis votre application (les classes D'API privées peuvent changer sans préavis, d'où la raison pour laquelle Google ne vous permet pas d'y accéder).
Solution: il suffit de recréer la classe dans l'ensemble de votre demande en copiant/collant le code source officiel à partir du lien que j'ai fourni. J'ai essayé, et ça marche très bien (il n'y a aucune raison que ça ne marche pas).
vous pouvez alors l'ajouter à votre preferences.xml
comme toute autre préférence. Exemple:
<com.example.myapp.YesNoPreference
android:dialogMessage="Are you sure you want to revert all settings to their default values?"
android:key="com.example.myapp.pref_reset_settings_key"
android:summary="Revert all settings to their default values."
android:title="Reset Settings" />
qui ressemble à ceci:
utilisez la préférence D'intention si vous utilisez l'écran de préférence xml ou vous si vous utilisez l'écran personnalisé alors le code serait comme ci-dessous
intentClearCookies = getPreferenceManager().createPreferenceScreen(this);
Intent clearcookies = new Intent(PopupPostPref.this, ClearCookies.class);
intentClearCookies.setIntent(clearcookies);
intentClearCookies.setTitle(R.string.ClearCookies);
intentClearCookies.setEnabled(true);
launchPrefCat.addPreference(intentClearCookies);
et puis créer Classe D'Activité un peu comme ci-dessous, comme des personnes différentes comme approche différente, vous pouvez utiliser n'importe quelle approche que vous aimez ceci est juste un exemple.
public class ClearCookies extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
showDialog();
}
/**
* @throws NotFoundException
*/
private void showDialog() throws NotFoundException {
new AlertDialog.Builder(this)
.setTitle(getResources().getString(R.string.ClearCookies))
.setMessage(
getResources().getString(R.string.ClearCookieQuestion))
.setIcon(
getResources().getDrawable(
android.R.drawable.ic_dialog_alert))
.setPositiveButton(
getResources().getString(R.string.PostiveYesButton),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//Do Something Here
}
})
.setNegativeButton(
getResources().getString(R.string.NegativeNoButton),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//Do Something Here
}
}).show();
}}
Comme dit avant il y a plusieurs façons de faire cela. c'est l'une des façons que vous pouvez faire votre tâche, s'il vous plaît accepter la réponse si vous pensez avoir obtenu ce que vous vouliez.
j'ai répondu à une question similaire ici avec un exemple d'utilisation de la DialogPreference.