如何在java中调用常量?

时间:2013-02-27 13:10:33

标签: java android alertdialog

这个问题可能听起来有点奇怪,但是,我如何在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 developers页面,我们可以清楚地看到这些主题是常量。 (公共,静态,最终)。由于它们是静态的,因此应使用类名调用,后跟一个点。他们也是公开的,所以应该没有问题。但奇怪的是我不能那样做。但是,如果我传递数字而不是常数名称,它的工作原理如下:

new TestAlert(con, 2);

p.s:我知道我应该使用AlertDialog.Builder来构建对话。但我们称之为“探索”。

帮助appriciated。

1 个答案:

答案 0 :(得分:11)

你没有“调用”常量,你可以引用它们。你引用它们的方式适用于public static这样的常量,并且你的TestAlert构造函数正确接受第二个参数为int,所以没关系。

这些主题常量已添加到API级别14.如果您正在编译/定位早期的API,它们将不存在。