6

我该如何解决这个错误。底部的所有三个字符串都会出现以下错误“方法 getString(int) 未定义类型 Apps”。请帮忙,我是个菜鸟。

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

4 回答 4

32

传递一个实例Context context

然后使用

context.getResources().getString(R.string.text1)

这里context属于您当前的活动。

于 2012-10-21T16:40:44.897 回答
6

FirstgetString不是静态方法,您在静态上下文中调用它,这是无法完成的。

其次,该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;
}
于 2012-10-21T16:38:12.537 回答
1

你可以试试

getResources().getString(R.string.somestrid);

或者

getApplicationContext().getResources().getString(R.string.somestrid);
于 2019-11-10T08:35:55.390 回答
1

创建 Application 的子类,例如 public class App extends 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()

于 2018-07-05T08:46:52.290 回答