gpt4 book ai didi

java - Android 表单作为 Activity

转载 作者:行者123 更新时间:2023-12-02 08:26:58 25 4
gpt4 key购买 nike

我有一个包含多项 Activity 的应用程序。在主类中,我打开一个数据库并创建一个内容列表,如下所示:

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);
}
}

这工作正常,我在主要 Activity 中有一个 ListView,其中填充了这些数据。现在,继续下一步。我正在尝试启动一个表单作为一项新 Activity ,该 Activity 将向此列表添加一个条目。该 Activity 启动良好,我能够轻松构建表单。问题在于访问列表以将其添加到其中。

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() 的最后一行正确执行。通过调试,我可以单步执行 Application 类并执行 addNumber()。在执行 numberList.add(thisNumber); 之前,我可以查看它试图添加到列表中的 thisNumber 对象的内存内容,并且数据是正确的。尝试执行该行会使标准 Android 格式的应用程序崩溃。 (使用“未找到源”加载 View.class,然后加载 ZygoteInit$MethodBlahBlah)。

所以我有点困惑,因为输入到 addNumber() 的数据看起来是正确的,并且当应用程序首次通过从数据构建列表启动时,该函数工作得很好在数据库中。从根本上说,我的想法正确吗?像这样的形式应该是它自己的 Activity 还是有更好的方法来做到这一点?如果它可以是它自己的 Activity ,我做错了什么?

谢谢,
内特

最佳答案

正如 Falmarri 指出的那样,直接实例化 Application 或 Activity 类是无效的。

相反,您有两个主要选项用于在 Activity 之间进行通信。

  1. 通过 Intent 传递信息。将电话号码列表作为额外内容添加到启动 AddNumber 的 Intent 中,并在完成后返回更改后的列表。

  2. 将信息存储在自定义应用程序中。扩展应用程序类(在 list 中选择它作为您的应用程序类)。将您的号码列表存储在那里。您可以通过 getApplication 从任何 Activity 访问 Application 类()。只需将其转换为您的 Application 类,然后访问该方法即可。

关于java - Android 表单作为 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com