How to implement a confirmation (yes/no) DialogPreference?
如何实现显示简单是/否确认对话框的首选项?
有关示例,请参阅
这是一个简单的警报对话框,Federico为您提供了一个可以查找的网站。
以下是如何构建警报对话框的简短示例。
1 2 3 4 5 6 7 8 9 10 | 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选项的确认对话框)。请在此处查看官方源代码。
不幸的是,它位于
解决方案:只需从我提供的链接中复制/粘贴官方源代码,即可在应用程序包中重新创建类。我试过这个,它运行正常(没有理由不这样做)。
然后,您可以像任何其他首选项一样将其添加到
1 2 3 4 5 | <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;如果您使用自定义屏幕,则使用Intent Preference,然后代码如下所示
1 2 3 4 5 6 7 | 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); |
然后创建活动类有点像下面,因为不同的人作为不同的方法,你可以使用任何你喜欢的方法这只是一个例子。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 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创建DialogPreference