如何实现显示简单是/否确认对话框的首选项?
例如,请参阅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 类,它完全符合您的要求(带有是和否选项的确认对话框)。请参阅此处的官方源代码。
不幸的是,它在com.android.internal.preference
包中,这意味着它是 Android 私有 API 的一部分,您无法从您的应用程序访问它(私有 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 屏幕,或者您使用的是自定义屏幕,请使用 Intent Preference,那么代码将如下所示
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();
}}
如前所述,有很多方法可以做到这一点。这是您可以完成任务的一种方式,如果您觉得您已经得到了您想要的,请接受答案。