java - 在 Activity 类中使​​用构造函数并尝试从该构造函数中获取信息以显示在关联的屏幕上

标签 java android constructor android-activity

我的 Activity 类包含一个计算一些数据的构造函数:

    public IPrintPanelActivity(String title, Object data, byte logoChar,
        String keyName, boolean printNCopies, boolean showPrintButton) {
    /*
     * Configure the panel
     */
    super();
    panelTitle = title;
    this.logoChar = logoChar;

    if (data != null) {
        setTextArea((String) data);
    }
    //put the display print panel here
    SignOnActivity.startMyActivity(context,(String) data,"CORRECT?");

    finish();
}

然后我需要这个数据对象(实际上是一个字符串)将其显示在关联布局文件的 TextView 中。问题是我不知道如何“从构造函数中获取数据”来编写类似

myTextView.setText(data);

我找到了两年多前提出的问题的答案,这似乎正是我所需要的。问题是我得到了上下文变量的 NullPointerException。

这是静态函数startMyActivity的定义:

    public static void startMyActivity(Context context, String paramA, String paramB) {
    // Build extras with passed in parameters
    Bundle extras = new Bundle();
    extras.putString("PARAM_A", paramA);
    extras.putString("PARAM_B", paramB);

    // Create and start intent for this activity
    Intent intent = new Intent(context,IPrintPanelActivity.class);
    intent.putExtras(extras);
    context.startActivity(intent);
}

我给你的信息够多吗?请让我知道并帮助我修复 NullPointerException。

最佳答案

不要为您的 Activity 类创建构造函数。 Android 操作系统负责实例化 Activity,并且只会尝试使用默认构造函数来执行此操作。请记住,系统可能会在不同时间销毁并重新创建 Activity,通常是在配置更改期间,例如当设备在纵向和横向之间旋转时。

传递给 Activity 的任何“参数”都应该使用启动 Activity 的 Intent 中的 Bundle 来完成。在生命周期回调方法之一(例如 onCreate())中,您可以调用 getIntent() 并检查其附加数据,然后按照您的意愿进行操作。

您发布的用户 Chase 创建用于启动 Activity 的静态方法的链接仍然遵循这些准则。他的方法所做的就是使用静态方法的参数组合 Intent 及其附加内容,然后使用此 Intent 调用 startActivity。他没有为 Activity 创建构造函数,也没有调用 new 来实例化 Activity。他只是简化了创建 Intent 及其附加内容的过程,以便使用正确的数据启动 Activity。

关于java - 在 Activity 类中使​​用构造函数并尝试从该构造函数中获取信息以显示在关联的屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23047716/

相关文章:

java - 如何将文本字段从主类传递到另一个类

java - 在哪里初始化 Jersey REST 服务中的 MySQL 连接池?

java - 错误 : JAVA_HOME is not set and could not be found after Eclipse installation

Java:加载后访问 Properties 对象的方法

android - 使用 SQLCipher 加密后无法压缩 Android SQLite 数据库

Android Studio 中的 Android NDK >=1.4

java - LWJGL/OpenGL 的理想 Sprite 表数量

android.view.InflateException 使用 selectableItemBackground 时

c# - 在 C# 中初始化一个 Generic.List

java - 能否从构造函数参数的泛型类型推断出泛型类型?