2010-07-29 11 views
22

whats czynienia zR.string.value Pomoc android zgłoszenie

CharSequence contentTitle = R.string.value; 

błąd nie można przekonwertować z int do CharSequence. Czy jest jakiś sposób obejścia tego, czy też czegoś brakuje? Próbowałem:

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

zwraca liczby całkowite. Każda pomoc?

Odpowiedz

55

R.string.value to połączenie do pola statycznego w klasie R, które jest automatycznie generowane przez Eclipse i które stanowi swego rodzaju podsumowanie wszystkich zasobów. Aby pobrać ciąg, trzeba użyć:

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

Jeśli otworzy klasę R będzie można zobaczyć, że zawiera tylko cyfry, które są odniesienia do zebranych środków projektu.

+0

działało świetnie. dzięki – Simon

+1

@Sephy Mam problem z getString(), wciąż otrzymuję "Metoda getString (int) jest niezdefiniowana ..." co robię źle? – mlevit

+0

Co próbujesz uzyskać za pomocą tej metody? – Sephy

7

Aby pobrać ciąg, trzeba użyć getString(),

ale getString() to metoda z klasy Context. Jeśli chcesz użyć tej metody poza klasą aktywność, powinieneś otrzymać link do kontekstu, a potem zadzwonić:

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

R.string.value zwraca identyfikator referencyjny zasobu „value”. Jeśli spojrzeć na klasy R pojawi się jako coś takiego:

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

byłem problemy z odwoływania się do metody getString(). Dokładny błąd, który Eclipse pluje na mnie jest:

Sposób getString (int) jest nieokreślona dla typu DatabaseHelper.MainDatabaseHelper

Po przeczytaniu na chwilę mam zorientowali się, że trzeba odwołać swoje kontekst aplikacji, aby uzyskać dostęp do metody getString(). Próbowałem utworzyć prywatną klasę pomocniczą SQLDatabase w dostawcy treści, ale to nie pozwalało mi odwoływać się do metody getString(). Moje rozwiązanie jakim jest zrobić coś takiego:

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

Zawiadomienie tych odniesień dwie okoliczności:

kontekst .getString()

(getContext()) .getString()

Nie wiem, czy jest to optymalny długoterminowy s ale wygląda na to, że działa. Mam nadzieję że to pomoże.

0

Można również użyć String s = getResources().getString(R.string.value);.

+0

Jak uzyskać dostęp w niektórych klasach java (nie aktywności) takich jak viewPagerAdapter. Nie mam tam "getContext"? –

Powiązane problemy