Android开发:无法使用getResource().getString及重写方法返回值问题咨询
解决Android中getPageTitle方法无法使用getResources().getString的问题
嘿,我来帮你搞定这个问题!从你贴的代码来看,主要有几个小问题需要调整:
1. 拼写错误:getResource() → getResources()
这是最直接的问题!Android中获取资源的方法是**getResources()**(注意末尾的s),少了这个s会直接导致编译报错,系统找不到这个方法。
2. 返回类型的兼容问题
你提到重写的方法原本返回CharSequence,而你尝试返回String——其实完全没问题!因为String是CharSequence的子类,直接返回String是符合方法签名要求的,不用特意纠结类型转换。
3. 上下文安全(针对Fragment场景)
如果这个方法是在Fragment中重写的,直接调用getResources()可能会有NullPointerException的风险(比如Fragment还未依附到Activity时)。这时候建议用requireContext().getResources()来确保上下文非空:
修正后的代码示例
如果你在Activity中重写:
@Override public CharSequence getPageTitle(int position) { // 用String.format让字符串拼接更优雅 return String.format("%s: %d", getResources().getString(R.string.tabla_del), position + 1); }
如果你在Fragment中重写:
@Override public CharSequence getPageTitle(int position) { return String.format("%s: %d", requireContext().getResources().getString(R.string.tabla_del), position + 1); }
额外优化:利用字符串资源的占位符
更推荐的做法是在strings.xml中直接定义带占位符的字符串,这样更便于多语言适配:
<!-- strings.xml --> <string name="tabla_del_title">tabla del: %d</string>
然后代码里就能更简洁地调用:
return getResources().getString(R.string.tabla_del_title, position + 1);
内容的提问来源于stack exchange,提问作者David Lamas Jimenez
相关产品推荐
相关产品推荐

