Как выполнить подтверждение (да / нет) DialogPreference?

Как я могу реализовать предпочтение, которое отображает простой диалог подтверждения да / нет?

Например, см. Browser->Setting->Clear Cache .

Solutions Collecting From Web of "Как выполнить подтверждение (да / нет) DialogPreference?"

Это простой диалог оповещений , Federico дал вам сайт, на котором вы можете посмотреть все.

Вот краткий пример того, как можно создать диалоговое окно предупреждения.

 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 поставляется со встроенным классом YesNoPreference, который делает именно то, что вы хотите (диалог подтверждения с параметрами yes и no). См. Официальный исходный код здесь .

К сожалению, он находится в пакете com.android.internal.preference , что означает, что он является частью частных API Android, и вы не можете получить к нему доступ из своего приложения (частные классы API могут быть изменены без предварительного уведомления, поэтому причина, по которой Google Не позволяйте им обращаться к ним).

Решение: просто заново создайте класс в пакете приложения, скопировав / вставив официальный исходный код из предоставленной мной ссылки. Я пробовал это, и он отлично работает (нет причин, почему это не должно).

Затем вы можете добавить его в свой файл preferences.xml как и любой другой. Пример:

 <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" /> 

Это выглядит так:

Скриншот

Используйте настройку Предпочтения, если вы используете экран предпочтений xml или вы, если используете пользовательский экран, тогда код будет выглядеть следующим образом:

 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); 

И затем создайте класс активности, как показано ниже. Поскольку разные люди, как разные, вы можете использовать любой подход, который вам нравится, это всего лишь пример.

 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(); }} 

Как сказано ранее, существует множество способов сделать это. Это один из способов выполнения вашей задачи, пожалуйста, примите ответ, если вы чувствуете, что у вас есть то, что вы хотели.

Я ответил на аналогичный вопрос здесь, на примере использования DialogPreference.

Создание диалогового окна диалога XML