Преобразование строковых ресурсов в строки - PullRequest
0 голосов
/ 21 мая 2018

Я уже пытался использовать

String mystring = getResources().getString(R.string.mystring);

И я нашел ту же тему в этой статье Как я могу преобразовать ресурсы android int в строку.например: android.R.string.cancel? .Но в моей ситуации это не работает.

Это мой код:

public class Film{


  private int image;
    private String name;
    private  String schedule;
    private  String description;

    public Film() {
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
       ...
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

public class FilmList {


 public static   ArrayList<Film> getFilms(){
        ArrayList<Film>films=new ArrayList<>();
        Film film=null;

        film =new Film();
        film.setName(getResources().getString(R.string.name1));
        film.setImage(R.drawable.img1);
        film.setDescription(getResources().getString(R.string.desc1));
        films.add(film);

        film =new Film();
        film.setName(getResources().getString(R.string.name2));
        film.setImage(R.drawable.img2);
        film.setDescription(getResources().getString(R.string.desc2));
        films.add(film);

        return films
         }
    }

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Создайте класс приложения и добавьте удержание его ссылки в статическую переменную.затем вы можете получить доступ к контексту в любом месте приложения

public class MyApp extends Application {

    private static AppLWP instance;

    @Override
    public void onCreate() {
         super.onCreate();
         instance = this;
    }
 }

Затем вы можете получить доступ к этому контексту в любом месте приложения

public static ArrayList<Film> getFilms(){
    ArrayList<Film>films=new ArrayList<>();
    Film film=null;

    film =new Film();
    film.setName(MyApp.instance.getResources()
    .getString(R.string.name1));
    film.setImage(R.drawable.img1);        
    film.setDescription(MyApp.instance.getResources()
    .getString(R.string.desc1));

    films.add(film);

    film =new Film();        
    film.setName(MyApp.instance.getResources()
    .getString(R.string.name2));
    film.setImage(R.drawable.img2);
    film.setDescription(MyApp.instance.getResources()
    .getString(R.string.desc2));
    films.add(film);

    return films
     }
}
0 голосов
/ 21 мая 2018

Сначала предоставьте контекст для класса Film с помощью действия, которое вы называете объектом Film.

Если вы звоните из Main Activity, вам нужно будет сделать что-то вроде этого:

public class MainActivty extends AppCompatActivity {

private static MainActivty obj;
onCreate() {
     //usual functions
     obj = MainActivity.this;
   }
}

Когда у вас есть контекст, просто попробуйте это:

String mystring = context.getString(R.string.mystring);

Или, если вы используете мой метод MainActivty:

String mystring = MainActivty.obj.getResources().getString(R.string.mystring);
0 голосов
/ 21 мая 2018

Если у вас нет доступа к Context (например, через Activity, Service, ContentProvider или BroadcastReceiver), вы не можете получить строковый ресурс.

Если у вас есть класс, который не является одним из вышеперечисленных, и ему нужно получить строковый ресурс, вы должны либо передать Context этому классу, чтобы он мог получить ресурс, либо передать этот классуже разрешенный ресурс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...