2012-10-21 15 views
5

Jak naprawić ten błąd. Wszystkie trzy ciągi na dole otrzymują następujący błąd "metoda getString (int) jest niezdefiniowana dla aplikacji typu". Proszę, pomóż im.Metoda getString (int) jest niezdefiniowana dla typu Apps

package com.actionbarsherlock.sample.fragments; 

import android.content.Context; 
import android.content.res.Resources; 


public final class Apps { 
/** 
* Our data, part 1. 
*/ 
public static final String[] TITLES = 
{ 
     "title1", 
     "title2", 
     "title3" 
}; 

/** 
* Our data, part 2. 
*/ 
public static final String[] DIALOGUE = { 

    getString(R.string.text1), 

    getString(R.string.string2), 

    getString(R.string.string3) 

}; 
} 
+0

Próbujesz wywołać nieistniejącą metodę. Naprawdę niewiele możemy zrobić, aby pomóc Ci to naprawić, nie wiedząc, co próbujesz zrobić. – Vulcan

+0

Czy chcesz coś rozszerzyć? Co próbujesz podklasy? – RyanG

+0

osoba pomagająca mi w tym stwierdzeniu "getString pochodzi z klasy aktywności, więc twoja klasa musi dziedziczyć z działania lub musisz wywołać getString z klasy, która już dziedziczy z działania." – idroid8

Odpowiedz

5

Pierwszy getString nie jest metoda statyczna, dzwonisz go w statycznym kontekście nie można tego zrobić.

Po drugie, metoda getString jest częścią klasy Resources, więc klasa nie rozszerza klasy Resources, więc nie można znaleźć tej metody.

Myślę, że parsowanie instancji klasy Resources do klasy Apps przy użyciu jej konstruktora byłoby najlepszą opcją.

coś takiego:

public final class Apps { 

    public Apps(Resources r){ 
    DIALOGUE = new String[]{ 
     r.getString(R.string.text1), 
     r.getString(R.string.string2), 
     r.getString(R.string.string3)}; 
    } 


/** 
* Our data, part 1. 
*/ 
public static final String[] TITLES = 
{ 
     "title1", 
     "title2", 
     "title3" 
}; 

/** 
* Our data, part 2. 
*/ 
public static String[] DIALOGUE; 
} 
+0

Pozbyłem się błędu, ale muszę naprawić coś innego. Zezwalam z wynikami :) – idroid8

+0

mhhh kiedy wybieram kategorię, a następnie tytuł aplikacji, siła aplikacji zamyka się. Choruję więcej, ale twoja odpowiedź była najbardziej pomocna. – idroid8

24

przekazać instancję Context context

a następnie użyć

context.getResources().getString(R.string.text1) 

tutaj context jest należący do swojej bieżącej działalności.

+0

rozwiązało to mój problem, dziękuję – Alaa

+0

Postępowałem zgodnie z tym i przepisałem Preferences.getBoolean (getString (R.string.pref_mypreference), false) na Preferences.getBoolean (*** getContext(). *** getString (R.string.pref_mypreference), false) i Bob został moim wujem: D (*** nie są dosłowne, ale pokazują tylko to, co się zmieniło);) –

Powiązane problemy