将字符串资源转换为字符串

时间:2018-05-21 16:25:04

标签: android string resources

我已经尝试过使用

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

我在本文How can I convert the android resources int to a string. eg.: 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 :(得分:1)

如果您无法访问Context(例如通过ActivityServiceContentProviderBroadcastReceiver无法获取字符串资源。

如果您的类不是上述类之一且需要获取字符串资源,则必须将Context传递给该类,以便它可以检索资源,或者传递该类已解决的资源。

答案 1 :(得分:0)

创建一个应用程序类,并在静态变量中添加一个保持引用。然后你可以在应用程序的任何地方访问上下文

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

然后,您可以在应用程序的任何位置访问此实例以获取上下文

#scroll {
    overflow: auto
    height: ?
}

答案 2 :(得分:0)

首先,通过你称之为电影对象的活动为电影类提供背景。

如果您从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);