2017-11-11 10 views
1

私はスピナーとそれに関連付けられた画像を入力するためにenumでアプリケーションを開発しています。スピナーテキストをstrings.xmlに参照して、スピナーに電話で設定された言語のテキストが入力されるようにしようとすると、テキストの代わりに数字だけが得られます。 getNombres()は、メインアクティビティでスピナーを設定するために使用されます。ここでスピナーの言語テキストをenumに基づいて変更

コードです:

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; 
    } } 

答えて

0

二つの方法:

まずそれがMainActivityであれば、あなたの方法から、静的なキーワードを削除し、にあなたの方法を変更します。

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

第2の方法は、静的な単語を保持することですが、Contextをメソッドを呼び出すたびに渡す必要があります:

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にあなたの方法をこのように呼ぶ:

getNombres(this); 

ここからは、文字列から文字列値を取得しますので、あなたがStringの代わりにint秒を取得します!

+0

ありがとうございました。私はあなたの2番目の提案をして、完璧に働いた – spcarman

+0

よかった@spcarmanあなたは大歓迎です。しかし、あなたの問題(stackoverflowスタイル)を解決したので、私の答えを受け入れることが残っている1つのことがあります。答えの左側のチェックマークをクリックしてください!あなたはあなたが質問をしたのであなたはそれを行うことができる唯一の人です! **ハッピーコーディング!**。 – Xenolion

関連する問題