这个问题可能听起来有点奇怪,但是,我如何在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。
答案 0 :(得分:11)
你没有“调用”常量,你可以引用它们。你引用它们的方式适用于public static
这样的常量,并且你的TestAlert
构造函数正确接受第二个参数为int
,所以没关系。
这些主题常量已添加到API级别14.如果您正在编译/定位早期的API,它们将不存在。