首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于枚举在旋转器上更改语言文本

基于枚举在旋转器上更改语言文本
EN

Stack Overflow用户
提问于 2017-11-11 12:58:43
回答 1查看 52关注 0票数 1

我正在开发一个带有枚举的应用程序来填充与它们相关的旋转器和图片。当我试图将旋转文本引用到strings.xml,以便在电话上的语言中填充文本的旋转器时,我只得到号码而不是文本。getNombres()用于填充主活动中的旋转器。

以下是代码:

代码语言:javascript
复制
 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;
     } }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-11 14:07:59

两种方式:

首先,如果方法在MainActivity中,则从方法中删除静态关键字,并将方法更改为:

代码语言:javascript
复制
public String[] getNombres() {
     String[] resultado = new String[TipoLugar.values().length];
     for (TipoLugar tipo : TipoLugar.values()) {
         resultado[tipo.ordinal()] = getString((tipo.texto));
     }
     return resultado;
 }

第二种方法是保留静态单词,但现在每次调用方法时都必须传递Context

代码语言:javascript
复制
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;
 }

然后在MainActivity中以这种方式调用您的方法

代码语言:javascript
复制
getNombres(this);   

从这里您将得到Strings而不是ints,因为您将从String获得字符串值!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47238132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档