У меня есть перечислимый класс, как эта:Получения имен из перечислений класса
public enum Names {
Logo1(R.drawable.adese,"Adese"),
Logo2(R.drawable.afra,"Afra");
private int resource;
private String description;
private Names(int resource, String description){
this.description = description;
}
public boolean isCorrect(String input){
return input.equals(description);
}
}
Я хочу, чтобы получить имя перечисления из его Drawable активности. Другими словами, когда я предоставляю R.drawable.adese для некоторого метода, я хочу получить Logo1. И когда я предоставляю R.drawable.afra, я хочу получить Logo2 и т. Д. Как я могу это сделать?
В моей деятельности
Names name;
.
.
.
id = R.drawable.adese;
name = Names.forDrawable(id);
check.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
a=name.isCorrect(text.getText().toString());
if(a==true){
Intent intent = new Intent(LogoActivity.this, LevelSelectionActivity.class);
startActivity(intent);
}
}
});
кнопка проверки и т.д. объявлены в деятельности, я не писал здесь, чтобы сократить.
И я получил сообщение об ошибке:
03-03 12:16:27.125: E/AndroidRuntime(6091): FATAL EXCEPTION: main
03-03 12:16:27.125: E/AndroidRuntime(6091): java.lang.NullPointerException
03-03 12:16:27.125: E/AndroidRuntime(6091): at com.example.turkishlogoquiz.LogoActivity$1.onClick(LogoActivity.java:57)
03-03 12:16:27.125: E/AndroidRuntime(6091): at android.view.View.performClick(View.java:4223)
03-03 12:16:27.125: E/AndroidRuntime(6091): at android.view.View$PerformClick.run(View.java:17275)
03-03 12:16:27.125: E/AndroidRuntime(6091): at android.os.Handler.handleCallback(Handler.java:615)
03-03 12:16:27.125: E/AndroidRuntime(6091): at android.os.Handler.dispatchMessage(Handler.java:92)
03-03 12:16:27.125: E/AndroidRuntime(6091): at android.os.Looper.loop(Looper.java:137)
-03 12:16:27.125: E/AndroidRuntime(6091): at android.app.ActivityThread.main(ActivityThread.java:4898)
03-03 12:16:27.125: E/AndroidRuntime(6091): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 12:16:27.125: E/AndroidRuntime(6091): at java.lang.reflect.Method.invoke(Method.java:511)
03-03 12:16:27.125: E/AndroidRuntime(6091): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
03-03 12:16:27.125: E/AndroidRuntime(6091): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
03-03 12:16:27.125: E/AndroidRuntime(6091): at dalvik.system.NativeStart.main(Native Method)
Я сделал это, но в этой деятельности я столкнулся с некоторыми ошибками в действии. Я отправляю сообщение и сообщение об ошибке немного. – ocry
Я отредактировал мой вопрос с моей деятельностью и ошибками. – ocry
ooops ... Я нашел ошибку. Вам нужно назначить поле 'resource' в конструкторе' Names'. 'this.resource = resource;' Проверьте мой обновленный ответ. –