Как реализовать подтверждение (да/нет) DialogPreference?
Как я могу реализовать предпочтение, которое отображает простой диалог подтверждения да/нет?
для примера см. Browser->Setting->Clear Cache
.
4 ответа:
это просто диалоговое окно предупреждения, Федерико дал вам сайт, где вы можете посмотреть вещи.
вот краткий пример того, как можно построить диалог оповещения.
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, который делает именно то, что вы хотите (диалоговое окно подтверждения с параметрами да и нет). Смотрите официальный исходный код здесь.
к сожалению, это в
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(); }}
Как уже было сказано, есть несколько способов сделать это. это один из способов, которым вы можете выполнить свою задачу, пожалуйста, примите ответ, если вы чувствуете, что вы получили то, что хотели.