Android 基于枚举更改微调器上的语言文本

Android 基于枚举更改微调器上的语言文本,android,enums,Android,Enums,我正在开发一个带有枚举的应用程序,以填充微调器和与之相关的图片。当我尝试将微调器文本引用到strings.xml以使微调器中填充手机上设置的语言文本时,我只会得到数字而不是文本。getNombres()用于填充主活动中的微调器 代码如下: public enum TipoLugar { OTROS(R.string.otros, R.drawable.otros), RESTAURANTE(R.string.restaurante ,R.drawable.restauran

我正在开发一个带有枚举的应用程序,以填充微调器和与之相关的图片。当我尝试将微调器文本引用到strings.xml以使微调器中填充手机上设置的语言文本时,我只会得到数字而不是文本。getNombres()用于填充主活动中的微调器

代码如下:

 public enum TipoLugar {
     OTROS(R.string.otros, R.drawable.otros),
     RESTAURANTE(R.string.restaurante ,R.drawable.restaurante),
     BAR(R.string.restaurante , R.drawable.bar),
     COPAS(R.string.copas , R.drawable.copas),
     ESPECTACULO(R.string.restaurante , R.drawable.espectaculos),
     HOTEL(R.string.hotel , R.drawable.hotel),
     COMPRAS(R.string.compras , R.drawable.compras),
     EDUCACION( R.string.educacion ,R.drawable.educacion),
     DEPORTE(R.string.deporte , R.drawable.deporte),
     NATURALEZA(R.string.naturaleza , R.drawable.naturaleza),
     GASOLINERA(R.string.gasolinera , R.drawable.gasolinera),
     VIVIENDA(R.string.vivienda , R.drawable.vivienda),
     MONUMENTO( R.string.monumento ,R.drawable.monumento);
     private final int texto;
     private final int recurso;

     TipoLugar(int texto,int recurso) {

         this.texto = texto;
         this.recurso = recurso;
       }

     public String getTexto() {
         return String.valueOf(texto);
     }

     public int getRecurso() {
         return recurso;
     }

     public static String[] getNombres() {
         String[] resultado = new String[TipoLugar.values().length];
         for (TipoLugar tipo : TipoLugar.values()) {
             resultado[tipo.ordinal()] = String.valueOf(tipo.texto);
         }
         return resultado;
     } }

两种方式:

首先从方法中删除静态关键字(如果它位于
MainActivity
中),然后将方法更改为:

public String[] getNombres() {
     String[] resultado = new String[TipoLugar.values().length];
     for (TipoLugar tipo : TipoLugar.values()) {
         resultado[tipo.ordinal()] = getString((tipo.texto));
     }
     return resultado;
 }
第二种方法是保留静态单词,但现在每次要调用方法时都必须传递
上下文

public static String[] getNombres(Context context) {
     String[] resultado = new String[TipoLugar.values().length];
     for (TipoLugar tipo : TipoLugar.values()) {
         resultado[tipo.ordinal()] = context.getString((tipo.texto));
     }
     return resultado;
 }
您将在
main活动中以这种方式调用您的方法:

getNombres(this);   

从这里您将获得
String
s而不是
int
s,因为您将从字符串中获得字符串值

两种方式:

首先从方法中删除静态关键字(如果它位于
MainActivity
中),然后将方法更改为:

public String[] getNombres() {
     String[] resultado = new String[TipoLugar.values().length];
     for (TipoLugar tipo : TipoLugar.values()) {
         resultado[tipo.ordinal()] = getString((tipo.texto));
     }
     return resultado;
 }
第二种方法是保留静态单词,但现在每次要调用方法时都必须传递
上下文

public static String[] getNombres(Context context) {
     String[] resultado = new String[TipoLugar.values().length];
     for (TipoLugar tipo : TipoLugar.values()) {
         resultado[tipo.ordinal()] = context.getString((tipo.texto));
     }
     return resultado;
 }
您将在
main活动中以这种方式调用您的方法:

getNombres(this);   

从这里您将获得
String
s而不是
int
s,因为您将从字符串中获得字符串值

多谢各位。我完成了你的第二次求婚,工作得非常出色,欢迎你。但还有一件事要做,那就是接受我的答案,因为它解决了你的问题(stackoverflow风格)。单击答案左侧的勾号!你是唯一能做到的人,因为你问了这个问题!编码快乐!。非常感谢你。我完成了你的第二次求婚,工作得非常出色,欢迎你。但还有一件事要做,那就是接受我的答案,因为它解决了你的问题(stackoverflow风格)。单击答案左侧的勾号!你是唯一能做到的人,因为你问了这个问题!编码快乐!。