如何修复此错误。底部的所有三个字符串都会出现以下错误“对于Apps类型,方法getString(int)未定义”。请帮助,我是这样的菜鸟。
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 :(得分:27)
传递Context context
然后使用
context.getResources().getString(R.string.text1)
此处context
属于您当前的活动。
答案 1 :(得分:5)
首先getString
不是静态方法,而是在静态上下文中调用它,这是无法完成的。
其次getString
方法是Resources
类的一部分,您的类不会扩展Resources
类,因此无法找到该方法。
我认为使用其构造函数将Resources
类的实例解析为Apps
类将是您的最佳选择。
这样的事情:
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;
}
答案 2 :(得分:1)
创建Application的子类,例如,公共类App扩展了Application { 在AndroidManifest.xml中将标签的android:name属性设置为指向您的新类,例如android:name =“。App” 在您的应用实例的onCreate()方法中,将您的上下文(例如this)保存到名为mContext的静态字段中,并创建一个返回此字段的静态方法,例如getContext():
这是它的外观:
public class App extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
public static Context getContext(){
return mContext;
}
}
现在您可以使用:App.getContext()。getString()
答案 3 :(得分:0)
您可以尝试
getResources().getString(R.string.somestrid);
或
getApplicationContext().getResources().getString(R.string.somestrid);