我想獲得一個擴展DialogPreference的類中運行的NumberPicker的半徑,並且讓setView()工作時遇到了很多麻煩。讓我們先從一些代碼:Alertdialog.Builder setview:調用需要API級別21
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"/>
糟糕,我錯過了setView(View)使用舊API的事實。謝謝,完美的作品。 –
謝謝soooo!自從我將我的最小sdk更改爲15後,我一直試圖讓setView()繼續工作...... – Zillinium