我有一个包含多个活动的应用程序。在主类我打开一个数据库并创建内容列表,像这样:Android表单作为活动
public class MyApplication extends Activity
{
private List<PhoneNumber> numberList;
public void onCreate(Bundle savedInstanceState)
{
...
numberList = new ArrayList<PhoneNumber>();
...
loadDatabase()
...
}
private void loadDatabase()
{
// File IO and parsing stuff
addNumber(thisNumber); // executes for each entry
}
public void addNumber(PhoneNumber thisNumber)
{
numberList.add(thisNumber);
}
}
这工作得很好,我有在填充了这个数据的主要活动一个ListView。现在,继续下一步。我正在尝试启动一个表单作为一个新的活动,将添加一个条目到这个列表。活动开展得很好,我能够轻松地创建一个表单。问题是访问列表添加到它。
public class AddNumber extends Activity
{
...
// This function is called from the done button
// <Button android:text="Done" android:onClick="formDone"/>
public void formDone(View v)
{
// findViewByIds here to get data from form.
// This is done correctly and I can see my data in memory
MyApplication access = new MyApplication();
PhoneNumber newNumber = new PhoneNumber();
// Fill newNumber object with data from form. Done correctly. Verified
access.addNumber(newNumber);
}
formDone()
的最后一行正确执行。通过调试,我可以进入应用程序类并执行addNumber()
。在执行numberList.add(thisNumber);
之前,我可以查看它试图添加到列表中的thisNumber
对象的内存内容,并且该数据是正确的。尝试执行该行,但会以标准Android格式崩溃应用程序。 (使用'Source not found'加载View.class,然后是ZygoteInit $ MethodBlahBlah)。
所以我有点困惑,因为它看起来像被馈送到addNumber()
的数据是正确的,并且当应用程序首先通过从数据库中的数据构建列表来启动应用程序时,该功能工作得很好。基本上,我在想这个是否正确?这样的表单应该是自己的活动,还是有更好的方式来做到这一点?如果它可以是它自己的活动,我做错了什么?
谢谢,
内特
我不知道你在做什么,但`应用程序访问=新应用程序();`在应用程序中永远不会有效。 *好的,在某些情况下,但不是在这里。 – Falmarri 2010-11-29 23:21:47
我重命名了类和对象,以便它们对我发布的代码量有意义。也许我在这方面做得不好......“应用程序”只是指主类。我正在创建一个主类的对象来访问它的成员函数。那是不是有效的?我还会如何访问私人列表? – linsek 2010-11-29 23:26:31