对于Apps类型,方法getString(int)未定义

时间:2012-10-21 16:35:49

标签: java android eclipse android-activity getstring

如何修复此错误。底部的所有三个字符串都会出现以下错误“对于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)

};
}

4 个答案:

答案 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);