我试图让一个半径 NumberPicker 在扩展 DialogPreference 的类中运行,并且我在让 setView() 工作时遇到了很多麻烦。让我们从一些代码开始:
public class RadiusPickerPreference extends DialogPreference{
public RadiusPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder builder) {
builder.setTitle(R.string.set_radius_dialog_fragment_title);
builder.setView(R.layout.dialog_radius_picker);
builder.setPositiveButton(android.R.string.ok, null);
builder.setNegativeButton(android.R.string.cancel, null);
}
}
这给了我一个关于 builder.setView 的错误,说“调用需要 API 21(当前最小值为 15)。” 我想支持具有 API 15+ 的设备,因此无法更改此选项。现在,如果我尝试覆盖
protected void onPrepareDialogBuilder(android.support.v7.app.AlertDialog.Builder builder)
相反,它说“方法不会覆盖其超类中的方法”。
问题是,如何设置视图?它不一定必须在 onPrepareDialogBuilder() 中,只要它支持 API 15+。谢谢!
PS:如果您需要更多代码,请告诉我。要将其显示在 XML 中,只需将其添加到<PreferenceScreen>
:
<com.example.project.RadiusPickerPreference
android:id="@+id/radPickerPref"
android:key="@string/pref_key_default_radius"
android:title="@string/pref_title_default_radius"/>