2012-01-05 20 views
10

Nella mia app Android Faccio un semplice brindisicaratteri speciali sono sostituisce con una piazza di app Android

Toast.makeText(
     parent.getApplicationContext(), 
     parent.getResources().getIdentifier(result, "string", 
     parent.getPackageName()), Toast.LENGTH_LONG).show(); 

Questo

parent.getResources().getIdentifier(result, "string", parent.getPackageName()) 

recupera una stringa il cui nome corrisponde derivare da strings.xml. Ho un file strings.xml per la lingua inglese e tedesca. Il problema è che caratteri speciali in tedesco come Ü Ö Ä non vengono visualizzati correttamente. Sono sostituiti da un simbolo quadrato.

I file strings.xml sono codificati in utf-8.

Dove è il problema e come posso risolvere il problema?

+1

non lo fanno usa 'getApplicationContext()' a meno che tu non sappia ** esattamente * perché * ne hai bisogno **. In questo caso, sicuramente non ne hai bisogno. Si prega di usare 'parent', non' parent.getApplicationContext() '. Dubito che risolverà il tuo problema, ma sicuramente inizierei da lì, poiché l'uso improprio di "Applicazione" causa strani comportamenti dell'interfaccia utente. – CommonsWare

+0

Il brindisi viene eseguito in una classe che estende AsyncTask e non attività. Quindi genitore è l'attività che crea l'attività ... –

+1

Il che significa che si dovrebbe usare 'parent', non' parent.getApplicationContext() '. – CommonsWare

risposta

2

ArtWorkAD,

Sembra come se il problema è causato dal fatto che il metodo Toast.makeText() non utilizza il set di caratteri corretto quando si tira i tuoi personaggi speciali dalle risorse.

suggerisco come un passo di debug si tira la corda verso il basso dalle risorse in modo indipendente e utilizzare il sovraccarico

Toast.makeText(Context context, CharSequence text, int duration).show(); 

per rendere il testo. In questo modo puoi confermare che il testo è quello che ti aspetti e restringere il tuo problema.

0

Invece di utilizzare Toast Message, è possibile utilizzare finestra di dialogo personalizzato in cui si può avere su TextView di mostrare questo string.Now utilizzare

TextView textView=new TextView(this); 
    textView.setText(Html.fromHtml("your string")); 

Spero che questo lavoro per voi, ma non ho provato