我不能在Android中使用getResource()。getString

时间:2018-04-17 21:42:04

标签: java android android-resources

我重写了一个返回CharSequence的方法,并返回charSequecence。 我也试过返回一个String。这是代码

public String getPageTitle(int position) {
    return  getResource().getString(R.string.tabla_del) + ": " + (position + 1);
}

2 个答案:

答案 0 :(得分:2)

通常有三个原因导致失败:

第一个,不存在上下文。解决这个问题,您需要将上下文对象传递给使用它的方法:

public String getPageTitle(Context context, int position) {
    return  context.getResource().getString(R.string.tabla_del) + ": " + (position + 1);
}

上下文变量是从Activity / Fragment传递的,但如果Activity / Fragment中存在方法,则可以避免;只需要getContext()getApplicationContext()方法取决于它是活动还是碎片。

public String getPageTitle(int position) {
    return  getContext().getResource().getString(R.string.tabla_del) + ": " + (position + 1);
}

第二个,没有导入R类。您应该检查您的类是否存在于子包内,例如: 您的主要包是com.example.androidapp,它在AndroidManifest和gradle文件中有所描述。因此,如果您的类存在于com.example.androidapp.configuration上,则需要从主程序包导入R类:

package com.example.androidapp.configuration
...
import com.example.androidapp.R;
...
public class Configuration {
    ...
}

第三个, 字符串文件上不存在您需要的字符串。在这里,您应该创建一个字符串文件并添加您需要的字符串。

答案 1 :(得分:1)

尝试以下代码:

public String getPageTitle(int position) {
    return this.getResources().getString(R.string.tabla_del)+ ": " + (position + 1);
}

public String getPageTitle(int position) {
    return context.getResources().getString(R.string.tabla_del)+ ": " + (position + 1);
}