gpt4 book ai didi

android - 如何将反射与 AlertDialog.Builder 一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:35 30 4
gpt4 key购买 nike

我正在使用以下方法创建一个警报对话框:

AlertDialog.Builder builder = new AlertDialog.Builder(context);

在 Android 3.0 中,警告对话框继承了创建它们的 Activity 的主题。您可以通过创建警告对话框来覆盖此操作:

AlertDialog.Builder builder = new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);

(更多关于 here )

不幸的是,这会强制关闭以前版本的 Android。我假设使用反射是答案,但无论我读了多少,我都无法弄清楚语法。谁能举个例子?

最佳答案

I assume using reflection is the answer, but I can't figure out the syntax no matter how much I read.

您或许可以使用反射。我不会。

我会选择 HoneycombHelper

This sample project还有一种情况,它需要为 3.0 做不同的事情,而不是 3.0——在这种情况下,使用操作栏中的自定义 View。您不能在 3.0 之前的 MenuItem 上调用 getActionView()

因此,在我需要自定义 View 的地方,我这样做:

    EditText add=null;

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
View v=HoneycombHelper.getAddActionView(menu);

if (v!=null) {
add=(EditText)v.findViewById(R.id.title);
}
}

if (add!=null) {
add.setOnEditorActionListener(onSearch);
}

在这里,我将 getActionView() 调用隐藏在 HoneycombHelper 类的静态方法中:

class HoneycombHelper {
static View getAddActionView(Menu menu) {
return(menu.findItem(R.id.add).getActionView());
}
}

我只在 3.0 或更高版本上加载 HoneycombHelper,因此即使它包含对旧版 Android 的无效方法调用,也不是问题。

在您的情况下,您的 HoneycombHelper 将有一个 gimmeMyBuilderDammit() 方法,或一些使用 API 级别 11 构造函数的类似方法。

关于android - 如何将反射与 AlertDialog.Builder 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346182/

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