2010-07-29 8 views
22

che cosa è l'accordo conR.string.value Aiuto notifica Android

CharSequence contentTitle = R.string.value; 

errore non è in grado di convertire da int a CharSequence. C'è un modo per aggirare questo o mi manca qualcosa? ho provato

String s = R.string.value + ""; 
CharSequence contentTitle = s; 

restituisce valori interi. Qualche aiuto?

risposta

55

R.string.value è una chiamata al campo statico nella classe R, che viene generata automaticamente da Eclipse e che esegue una sorta di riepilogo di tutte le risorse. Per recuperare la stringa, è necessario utilizzare:

CharSequence contentTitle = getString(R.string.value); 

Se si apre la classe R si vedrà che essa contiene solo i numeri che sono i riferimenti alle risorse compilate del progetto.

+0

ha funzionato alla grande. grazie – Simon

+1

@Sephy Sto avendo un problema con getString(), continuo a ricevere "Il metodo getString (int) non è definito ..." cosa sto facendo male? – mlevit

+0

Cosa provate a ottenere con questo metodo? – Sephy

7

per recuperare la stringa, è necessario utilizzare getString(),

ma getString() è un metodo dalla classe Context. Se si desidera utilizzare questo metodo al di fuori la classe di attività, si dovrebbe ottenere link al tuo contesto e poi chiamare:

String s = mContext.getString(R.string.somestring) 
1

R.string.value restituisce il numero ID di riferimento del 'valore' delle risorse. Se guardate la vostra classe R apparirà come qualcosa di simile a questo:

public static final class string { 
    public static final int value=0x7f040007; 
} 

ho sperimentato problemi con riferimento al metodo getString(). L'errore esatto che Eclipse sputa a me è:

Il metodo getString (int) non è definito per il tipo di DatabaseHelper.MainDatabaseHelper

Dopo aver letto per un po 'ho capito che è necessario fare riferimento il vostro contesto dell'applicazione per ottenere l'accesso al metodo getString(). Stavo cercando di creare una classe helper SQLDatabase privata in un fornitore di contenuti, tuttavia, che non mi permetteva di fare riferimento al metodo getString(). La mia soluzione finora è quello di fare qualcosa di simile:

private class MainDatabaseHelper extends SQLiteOpenHelper { 

    MainDatabaseHelper(Context context) { 
     super(context, context.getString(R.string.createRoutesTable), null, 1); 
    } 

    public void onCreate(SQLiteDatabase db) { 
     db.execSQL((getContext()).getString(R.string.createRoutesTable)); 
    } 
} 

notare questi riferimenti a due contestuali:

contesto .getString()

(getContext()) .getString()

Non so se questo è il migliore a lungo termine s oluzione ma sembra funzionare per il momento. Spero che questo ti aiuti.

0

È inoltre possibile utilizzare String s = getResources().getString(R.string.value);.

+0

Come accedere ad alcune classi java (non ad attività) come ad esempio viewPagerAdapter. Non ho lì 'getContext'? –