Android 带有确认对话框的首选项
我很难选择Dialog,网站上建议的方法都不适合我。这是我首先得到的。我有这个Android 带有确认对话框的首选项,android,android-preferences,Android,Android Preferences,我很难选择Dialog,网站上建议的方法都不适合我。这是我首先得到的。我有这个 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_stage_1, menu); return true; } 这将打开菜单,当您选择设置时,在下一个屏幕中只有一个首选项,即从preferences.xml创建的首选项 <PreferenceSc
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_stage_1, menu);
return true;
}
这将打开菜单,当您选择设置时,在下一个屏幕中只有一个首选项,即从preferences.xml创建的首选项
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:summary="clears all data"
android:title="Reset Data" >
<intent
android:targetClass="com.example.myapp.settings.DialogActivity"
android:targetPackage="com.example.myapp" >
</intent>
</Preference>
我想当我点击这个选项时,会出现一个对话框,里面有“是”和“否”按钮,这样我就可以在某个地方定义这些按钮的编程功能。如何操作?在这种情况下,如果您可以使用Android Studio,您可以右键单击包含活动的文件夹,然后选择创建新的
设置活动
然后在MainActivity中的xml for ActionBar中,设置如下设置按钮:
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="99"
android:showAsAction="ifRoom"/>
您仍然可以在SettingsActivity
中使用下面的“我的代码”在侦听器中构建AlertDialog
AlertDialog.Builder alert = new AlertDialog.Builder(self);
alert.setTitle(getResources().getString(R.string.action_about));
//Set up your AlertDialog and buttons
alert.setMessage(message);
alert.setNegativeButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.setCancelable(true);
alert.show();
你可以延长时间。重写onDialogClosed
方法,该方法在对话框关闭时调用。该方法的参数指示用户是选择了正按钮
还是负按钮
CustomDialogPreference.java:
preferences.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:summary="clears all data"
android:title="Reset Data" >
<intent
android:targetClass="com.example.myapp.settings.DialogActivity"
android:targetPackage="com.example.myapp" >
</intent>
</Preference>
您可以参考官方的。如果您使用v7支持库,它有点复杂。。。但我更喜欢以下几点:
首先创造偏好
<PreferenceCategory
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:title="@string/settings_absence_category_data">
<Preference
android:key="absence_data"
android:title="@string/settings_absence_data_clear"></Preference>
</PreferenceCategory>
下面的AlertForClearAbscenceData函数用于alertdialog
private void alertForClearAbsenceData(){
AlertDialog.Builder alert = new AlertDialog.Builder(getMainActivity());
alert.setTitle(getString(R.string.fragment_absence_alert_title));
alert.setMessage(getString(R.string.fragment_absence_alert_message));
alert.setCancelable(false);
alert.setPositiveButton(R.string.fragment_absence_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alert.show();
}
这是如何确认警报对话框的示例我将此方法放置在何处,如何启动具有此方法的类,请解释更多我实际上希望此对话框显示在PreferenceActivity中,例如当我从MainActivity的菜单中选择Settings时,PreferenceActivity打开,第一个选项是Clear Data,所以我想展示一个带有确认的对话框。在这种情况下,如果可以使用Android Studio,则可以右键单击包含活动的文件夹,然后选择创建新的设置活动。您仍然可以使用我的代码在SettingsActivity
中的侦听器中构建AlertDialog。我在回答中添加了一些其他代码。我想补充的是,您不必覆盖布局。如果您只想显示带有默认确认布局的自定义消息,可以在构造函数中使用setDialogMessage()
方法,将资源ID设置为字符串值。
<PreferenceCategory
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:title="@string/settings_absence_category_data">
<Preference
android:key="absence_data"
android:title="@string/settings_absence_data_clear"></Preference>
</PreferenceCategory>
Preference clear = findPreference("absence_data");
clear.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
alertForClearAbsenceData();
return true;
}
});
private void alertForClearAbsenceData(){
AlertDialog.Builder alert = new AlertDialog.Builder(getMainActivity());
alert.setTitle(getString(R.string.fragment_absence_alert_title));
alert.setMessage(getString(R.string.fragment_absence_alert_message));
alert.setCancelable(false);
alert.setPositiveButton(R.string.fragment_absence_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alert.show();
}