我的 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/