gpt4 book ai didi

android - Android 库项目中静态字段的 java.lang.NullPointerException

转载 作者:行者123 更新时间:2023-11-30 04:45:35 24 4
gpt4 key购买 nike

首先解释一下项目是如何设置的:

  • 包含两个类的 Android 库项目:
    • UserActivity - 在 HolderClass 中使用静态字段
    • HolderClass - 这个有静态字段数据
  • 引用库项目的 Android 应用程序只有一个类:
    • StarterActivity - 当应用程序启动时,在 onCreate 中将静态字段 Data 设置为某个值,然后启动 UserActivity

现在,问题是:有时 我得到该静态字段数据的 java.lang.NullPointerException - 就好像我从未初始化它(或同时删除值)。它从未在我的测试设备上发生过,但我不断收到来自客户端设备的错误报告。我只能猜测这是怎么发生的——也许用户离开应用程序,然后返回并且系统重新创建整个应用程序上下文,但在该上下文中 HolderClass 具有空的静态字段数据?

我的问题:

从 Activity 的 onCreate 中初始化该静态字段的方法是否错误?我应该将数据放在 ApplicationContext 中吗?还是做点别的?

我愿意接受所有建议。

附言如果您在从描述中进行可视化时遇到问题,这里是我所说的所有内容在代码中的样子:

// IN ANDROID APP PROJECTpublic class StarterActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         // just start activity in library        Intent myIntent = new Intent(this, AutolaunchActivity.class);        startActivityForResult(myIntent, 1);        }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        // exit when activity from library exits        finish();           }}// IN LIBRARY PROJECTpublic class HolderClass {    public static String Data;}public class UserActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         // init layout      }    public void someButtonClicked() {        HolderClass.Data.trim();    }}

最佳答案

记录了 Activity 之间共享数据的常用方法 here .错误的间歇性向我暗示了时间问题。你在一些初始化中使用线程吗?另外,你知道 NPE 发生在 StarterActivity 还是 UserActivity 中吗?

关于android - Android 库项目中静态字段的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062061/

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