3

这个问题可能听起来有点奇怪,但是,我如何在 java 中调用常量?问题是我正在玩 AlertDialog android 类。由于此类具有受保护的构造函数,因此我无法在创建对话框的活动类中调用它们。因此,我创建了一个子 AlertDialog 类并将其构造函数公开,如下所示:

public class TestAlert extends AlertDialog {

public TestAlert(Context context) {
    super(context); 
}   

public TestAlert(Context context, int theme) {
    super(context, theme);      
}
}

然后我创建了这样的对话框:

TestAlert ta = new TestAlert(con, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
    ta.setMessage("Hello");     
    ta.show();

这里奇怪的是这段代码是错误的:AlertDialog.THEME_DEVICE_DEFAULT_DARK 我不知道为什么。

从有关 AlertDialog 类的Android 开发人员页面中,我们可以清楚地看到这些主题是常量。(公共,静态,最终)。因为它们是静态的,所以应该用类名调用它们,后跟一个点。他们也是公开的,所以应该没有问题。但奇怪的是我不能那样做。但是如果我传递数字而不是常量名称,它的工作原理是这样的:

new TestAlert(con, 2);

ps:我知道我应该用它AlertDialog.Builder来建立对话。但是让我们称我在“探索”。

帮助了解。

4

1 回答 1

10

您不会“调用”常量,而是引用它们。您引用它们的方式对于public static像这样的常量很好,并且您的TestAlert构造函数正确地接受第二个参数作为int,所以这很好。

这些主题常量是在 API 级别 14 中添加的。如果您正在针对/针对较早的 API 进行编译,它们将不存在。

于 2013-02-27T13:13:47.137 回答