私はたKeyEventを拡張するクラスを作成しました:"public static final int"値を名前で取得するには?
public class myKeyEvent extends KeyEvent {
public static final int MY_KEYCODE_01 = KeyEvent.KEYCODE_A;
//...
public static final int MY_KEYCODE_30 = KeyEvent.KEYCODE_Z;
}
さて、私は(例えば「MY_KEYCODE_01は」整数値KeyEvent.KeyCODE_Aを返す必要があります。)変数名で整数値を取得したい別のクラスから(別のファイル)。 LogCatで
try{
Class cls = myKeyEvent.class.getClass();
Field field = cls.getDeclaredField("MY_KEYCODE_01");
int value = (Integer) field.get(cls);
Log.v("TAG", "Field value is " + value);
} catch (NoSuchFieldException e) {
Log.e("TAG", "Field either doesn't exist or is not public: " + e.toString());
}
:
は私がしようとした
Field either doesn't exist or is not public: java.lang.NoSuchFieldException: MY_KEYCODE_01
私はそれをどのように行うことができますか?
'myKeyEvent'クラスが' public'の場合、 'MY_KEYCODE_01'フィールドも' public'なので、 'Field field = KeyEvent.MY_KEYCODE_01;'のように単純に行うことができますね – Bhushan
混乱するだろう - それらの数字は開発者にとって特に役立つものではない(特にあなたがいくつかをスキップしたようなので)。また、静的フィールドが継承されているので、あなたは(少し良く、そのクラスに名前を付けてください) 'myKeyEvent.KEYCODE_A'としてそれらにアクセスすることができるはずです。正確に何を達成しようとしているのですか?(リフレクションの他に、あなたはどんなクラスが使われているので、少し無意味です...)? –