例如,我想采取这个
public class SomeClass {
public static final String GREET_STRING = "Hello!";
//...
并将其更改为:
public class SomeClass {
public static final String GREET_STRING = getString(R.string.greet_string);
//...
可以这样做还是我需要某种Context实例化来获取字符串加载的资源?
答案 0 :(得分:0)
要使用google.script.url.getLocation(function(location) {
var params = location.parameter;
var param1 = params.param1;
var param2 = params.param2;
// Use parameters...
});
,您需要一个上下文。资源字符串不能是getString()
,因为更改区域设置时可能会更改字符串资源(如果您有多个字符串文件,例如static final
和strings.xml (us)
)
答案 1 :(得分:0)
试试这个:
public abstract class SomeClass extends AppCompatActivity {
public static String GREET_STRING(Context context) {
if (context == null) {
return null;
}
return context.getResources().getString(R.string.greet_string);
}
}
RES /值/字符串:
<resources>
<string name="greet_string">Hello!</string>
</resources>
从MainClass调用SomeClass
public class MainClass extends SomeClass {
private final static String TAG = MainClass.class.getName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// call SomeClass from MainClass
Log.i(TAG, SomeClass.GREET_STRING(this));
}
}
答案 2 :(得分:0)
有两种方法可以访问类中没有扩展Activity或Fragment的字符串。
将Context
或Activity
传递给类构造函数
public class SomeClass {
private Context context;
public SomeClass(Context context) {
this.context = context;
}
public static final String GREET_STRING = context.getString(R.string.greet_string);
}
第二种方式是如果你不想将上下文传递给类。您需要创建Application和静态函数get实例的实例。
public class App extends Application {
private static App instance = null;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static App getInstance() {
// Return the instance
return instance;
}
}
public class SomeClass {
public static final String GREET_STRING = App.getInstance().getString(R.string.greet_string);
}