在我的onCreate方法之外,我的stringarray无法调用,为什么呢?
我尝试使用getResources();在onCreate之外的方法中再次初始化stringarray;但我也不能这样称呼 我猜想在编程世界中还缺少一些基础知识,我还不是很新,我能帮我一下,还是解释一下为什么不能在onCreate之外调用字符串数组和/或如何解决它?
onCreate内的示例:
final String[] list = res.getStringArray(R.array.fact);
onCreate之外:
public void facts(){
getResources();
final String[] list = res.getStringArray(R.array.fact);
}// marked res. in red saying "qualifier must be an expression" and without that I cant call "list"..
答案 0 :(得分:0)
替换
final String[] list = res.getStringArray(R.array.fact);
通过
final String[] list = getResources().getStringArray(R.array.fact);
答案 1 :(得分:0)
我相信您的问题是可变范围。您已经在onCreate()方法中声明了字符串数组,并为其指定了“方法范围”,然后便准备在另一个方法中对其进行访问。我建议将字符串数组声明为类级别的变量,以便您可以从该类中的任何方法访问它。
为避免Ben P.在注释中指出的NullPointerException
问题,您可以在onResume()方法中初始化数组变量,以便在需要在其他任何地方使用它之前准备好使用它
请务必查看代码示例下方的参考链接。我认为他们会比我在这里的快速解答中更好地解释“为什么”。
public class MainActivity extends AppCompatActivity {
private static String[] list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
// onResume() runs after onCreate() and onStart() in the Android Activity lifecycle.
// If your array has not been initialized yet, do it now.
if (list == null || list.length == 0) {
list = getResources().getStringArray(R.array.fact);
}
}
public void facts() {
// Do something with your array...
for (String arrayItem : list) {
String fact = arrayItem.toUpperCase();
}
}
}
参考: