我有两个活动类(其中一个与Method类在同一个数据包中,第二个在另一个数据包中 - 但我认为这没有问题)和一个有用的类叫做Methods,我分配变量声明和吸气剂和二传手。 当我想在第一个活动类中存储一些像字符串数组一样的数据时,我会做这样的事情:
Methods met = new Methods();
met.StoreSomething[0] = ("qwerty")
当我打电话给同一个班级时,它运作良好:
met.GetSomething[0].
问题是当我想在第二课上获得这些数据时。我以同样的方式宣布:
Methods met = new Methods();
met.GetSomething[0];
但在此之后我得到了null数组。 我认为当我在第二个活动类中声明新的遇到我这次我制作的新对象与第一类的对象没有关联。但我不确定。所以任何人都可以帮助我?如何解决这个问题?
答案 0 :(得分:2)
如果要在Activity1和Activity2类中访问相同的Methods实例,则有几种方法可以实现此目标:
但在开始创建Method isntances之前有1条评论: 在您的问题中,您说“当我想在第一个活动类中存储一些数据时......”。这是不正确的。 Yu总是从一个类的实例开始工作。所以,不知何故,你必须创建一个Activity1实例和一个Activity2实例。
如果这两个Activity实例可以相互“对话”,那么创建Methods实例的第一个实例应该将引用发送给第二个Activity实例。然后,两个Activity实例都具有对相同Methods实例的引用,以及一个实例设置的内容,可以由另一个实例检索。
2)如果Activity实例无法相互通信,也许您可以使用单例方法:使Methods的构造函数为private,并向方法(如getInstance())添加静态方法。当第一次调用getInstance时,它可以创建一个Methods实例,并将其存储在Methods中的静态变量中。 下一次调用getInstance只返回相同的实例。因此,两个Activity实例都引用了相同的Methods实例,并且可以设置/获取相同的数据。
3)如果不希望只有1个Methods实例,则可以使用第二个解决方案的变体:向getInstance方法添加一个键(两个Activity实例都必须知道),并创建一个新方法每个新密钥的实例。如果两个Activity类使用相同的键,它们将接收相同的引用,并可以再次交换数据。
4)你可以在Methods static中设置方法“storeSomething”和“getSomething”。然后,所有方法实例都将使用相同的数据,您的Activity实例可以再次交换数据。
我希望其中一个漏洞可以帮助您解决问题。
答案 1 :(得分:0)
您可以使用static
在类之间共享属性。
Java for Beginners: Static Variables
答案 2 :(得分:0)
为简单起见,尝试使用SharedPreferences在活动之间存储和检索数据 如果您不想在第二个Activity中检索数据后保留该数据,只需将其删除或清除您的sharedPreferences obj即可。