【发布时间】:2015-02-13 02:29:07
【问题描述】:
我已经完成了搜索,似乎是根据具体情况来确定造成这种情况的原因。不过,真正了解它的人很可能会不同意。
从我的主屏幕进入其他活动的按钮工作得很好,与不起作用的唯一区别是它实际上是从另一个 .java 文件中提取一个类/变量,所以我确定我没有'没有正确实现它。
这是一个单例类:
GLOBAL.JAVA
//Constructor
//
protected Global() {
getInstance();
}
//Singleton Method
//
public static Global getInstance() {
if(instance == null) {
initialize();
instance = new Global();
}
return instance;
}
我有一些(静态)类结构(我使用术语结构,因为我主要使用 C++ 编程,对我来说,它们就是这样),它们被放置在全局文件/类中,以及这个包含程序的所有数据static questionStruct[] questions = new questionStruct[TOTAL_QUESTIONS];
从getInstance()(单例方法)调用的initialize(); 函数只是将数据填充到questionStruct[] 数组中。
我有一个返回字符串的方法
public static String getQ(int q){
return questions[q].q;
}
在按下按钮调用的 .java 文件中,我有 placeData(); 只是为了测试一下,在那个函数中:
public void placeData() {
String testString = ("Testing Text: " + Global.getQ(3));
TextView Q = (TextView) findViewById(R.id.testingText);
Q.setText(testString);
}
最后......希望......它应该出现在 XML 文件中的 TextView:
<TextView
android:id="@+id/testingText"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
这是我的官方错误,我认为是崩溃的指示器,仅在我按下按钮初始化此活动时才会发生。
java.lang.RuntimeException: Unable to start activity ComponentInfo{godwin.com.study/godwin.com.study.practice}: java.lang.NullPointerException: Attempt to read from field 'java.lang.String godwin.com.study.Global$questionStruct.q' on a null object reference
想法???
编辑:
Global.Java 中的类(如 C++ 中的结构)
class answerStruct
{
String a;
boolean status;
}
//Structure for Questions
//
class questionStruct
{
String q;
answerStruct[] answer = new answerStruct[TOTAL_ANSWERS];
}
“initialize()”函数:
public static void initialize() {
questions[0].q = "Question # 1";
questions[0].answer[0].a = "Q1A1";
questions[0].answer[0].status = true;
questions[0].answer[1].a = "Q1A2";
questions[0].answer[1].status = false;
...And so on...Forever
}
【问题讨论】:
-
questionStruct声明在哪里? -
什么是
questions[q].q;?我认为您不需要最后一个.q,只需questions[q]?完整的跟踪和行号也可能有所帮助。 -
很明显,问题是当您调用
getQ获取q的某个值时,questions[q]是null。这表明initialize()方法存在问题,但除非您发布该方法的代码,否则无法告诉您如何解决它。 -
大家好,感谢您的回复。希望我能澄清一些事情。
quesitonStruct是在 Global.java 中声明的类。变量quesitons[q].q中的.q实际上是“questions[]”类数组中的一个字符串。并且初始化方法用信息填充数组。我想我遗漏了一些东西,但我认为我不需要发布所有内容。试图在什么都不发和什么都发之间找到一个快乐的媒介,哈哈。我将编辑代码,希望能提供你需要的帮助我的东西。再次感谢。 -
如果需要,我可以从原始问题中删除当前代码段,然后复制/粘贴整个文件...我认为所涉及的是 2x .java 文件和 1x XML。