gpt4 book ai didi

java - Alertdialog.Builder 设置 View : Call requires API level 21

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:17 24 4
gpt4 key购买 nike

我试图让半径 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)”。我想支持具有 15+ API 的设备,因此无法更改它。现在,如果我尝试覆盖

protected void onPrepareDialogBuilder(android.support.v7.app.AlertDialog.Builder builder)

相反,它表示“方法不会覆盖其父类(super class)中的方法。”

问题是,如何设置 View ?不一定非要在onPrepareDialogBu​​ilder()中,只要支持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"/>

最佳答案

您在这里尝试做的是调用 API 21 中添加的函数,而不是 API 1 中添加的函数。根据 the documentation ,您需要 setView(View view) 而不是 setView(int layoutResId)。要从布局中获取 View,您需要一个 LayoutInflater。要获取 LayoutInflater 的实例,您需要一个上下文对象。当您创建对话框时,我建议将您的 Context 作为变量存储在类中以备将来使用。然后,在 onPrepareDialogBu​​ilder 中,您可以使用 ( as per the docs ):

LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE)

现在,您可以使用 inflater 从布局中获取 View 并按如下方式设置对话框的 View:

 View v = inflater.inflate(R.layout.dialog_radius_picker, null);

因此,您的代码可能如下所示:

@Override
protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder builder) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
builder.setTitle(R.string.set_radius_dialog_fragment_title);
View v = inflater.inflate(R.layout.dialog_radius_picker, null);
builder.setView(v);
builder.setPositiveButton(android.R.string.ok, null);
builder.setNegativeButton(android.R.string.cancel, null);
}

希望对您有所帮助!

关于java - Alertdialog.Builder 设置 View : Call requires API level 21,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com