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コンストラクターは 2 番目の引数を として正しく受け入れているintので、問題ありません。

これらのテーマ定数は、API レベル 14 で追加されました。以前の API を対象としてコンパイルしている場合、それらは存在しません。

于 2013-02-27T13:13:47.137 に答える