Как реализовать подтверждение (да/нет) 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, который делает именно то, что вы хотите (диалог подтверждения с параметрами 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();
}}
Как уже говорилось, есть несколько способов сделать это. это один из способов, которым вы можете выполнить свою задачу, пожалуйста, примите ответ, если вы чувствуете, что вы получил то, что хотел.