Как я могу реализовать предпочтение, которое отображает простой диалог подтверждения да/нет?
В качестве примера см. Browser->Setting->Clear Cache
.
Как я могу реализовать предпочтение, которое отображает простой диалог подтверждения да/нет?
В качестве примера см. Browser->Setting->Clear Cache
.
Это простое диалоговое окно предупреждений, 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.