如何实现确认(是/否)DialogPreference?

我如何实现显示简单的是/否确认对话框的首选项?

有关示例,请参阅Browser->Setting->Clear Cache

这是一个简单的警报对话框 ,费德里科给了你一个网站,你可以查找的东西。

下面是如何构build警报对话框的简短示例。

 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类如有更改,恕不另行通知,因此谷歌的原因不让你访问它们)。

解决scheme:只需在我提供的链接中复制/粘贴官方源代码,就可以在应用程序包中重新创build类。 我试过这个,它工作正常(没有理由,为什么不应该)。

然后,您可以将其添加到您的preferences.xml就像其他任何首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); 

然后创build活动类有点像下面,由于不同的人作为不同的方法,你可以使用任何你喜欢的方法,这只是一个例子。

 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创build一个DialogPreference

Interesting Posts