2010-07-29 10 views
22

was ist der Deal mitR.string.value Hilfe android Benachrichtigung

CharSequence contentTitle = R.string.value; 

Fehler nicht von int nach CharSequence umwandeln kann. Gibt es einen Weg um dies oder fehlt mir etwas? ich versuchte

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

es ganze Zahlen Werte zurückgibt. Irgendwelche Hilfe?

Antwort

55

R.string.value ist ein Aufruf an das statische Feld in der Klasse R, das automatisch von Eclipse generiert wird und eine Art Zusammenfassung aller Ihrer Ressourcen erstellt. Um die Zeichenfolge abzurufen, müssen Sie verwenden:

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

Wenn Sie die R-Klasse öffnen, werden Sie sehen, dass es nur Zahlen enthält, die Verweise auf die kompilierten Ressourcen des Projekts sind. getString() zu verwenden,

aber getString() ist eine Methode von Context-Klasse

+0

hat super funktioniert. Danke – Simon

+1

@Sephy Ich habe ein Problem mit getString(), ich bekomme immer wieder "Die Methode getString (int) ist undefiniert ..." Was mache ich falsch? – mlevit

+0

Was versuchen Sie mit dieser Methode? – Sephy

7

die Zeichenfolge abzurufen, die Sie benötigen. Wenn Sie diese Methode außerhalb Ihrer Aktivitätsklasse verwenden möchten, sollten Sie Link zu Ihrem Kontext zuerst und dann rufen:

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

R.string.value gibt die Referenz-ID-Nummer der Ressource ‚Wert‘. Wenn Sie auf Ihre R-Klasse aussehen wird es als etwas so aussehen:

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

Ich habe Probleme erlebt die getString() -Methode mit Referenzierung. Der genaue Fehler, dass Eclipse-mich spuckt ist:

Verfahren getString (int) für den Typ DatabaseHelper.MainDatabaseHelper nicht definiert ist

Nach der Lektüre für eine Weile habe ich herausgefunden, dass Sie Ihre Referenz muss Kontext der Anwendung, um Zugriff auf die Methode getString() zu erhalten. Ich habe versucht, eine private SQLDatabase-Helper-Klasse in einem Inhaltsanbieter zu erstellen, die es mir jedoch nicht erlaubte, auf die Methode getString() zu verweisen. Meine Lösung ist so weit, so etwas zu tun:

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

Hinweis Diese beiden Kontext Referenzen:

Kontext .getString()

(getContext()) .getString()

Ich weiß nicht, ob dies die optimale langfristige s ist Lösung scheint aber für den Moment zu funktionieren. Hoffe das hilft.

0

Sie könnten auch String s = getResources().getString(R.string.value); verwenden.

+0

Wie erhalten Sie Zugriff in einigen Java-Klasse (keine Aktivität) wie ViewPagerAdapter. Ich habe dort nicht 'getContext'? –

Verwandte Themen