我有一個包含多個活動的應用程序。在主類我打開一個數據庫並創建內容列表,像這樣: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