我有一个主要的Activity和一个对话框,通过它我想更改一些应用程序变量。这不幸的是包括改变几个不同类的现有实例的属性。我想要做的就是调用我的主Activity的方法,它可以处理更改Activity的变量和修改类的现有实例。在我的对话我打电话从对话框中更改变量
mainActivity.smartSetter(variableName, variableValue);
,并在我的活动我有
public void smartSetter(variableName name, float value) {
switch (name) {
case Name1: {do stuff}
case Name2: {do stuff}
//etc
}
编译器说,我不能让一个静态参考非静态方法smartSetter。仍然是Java noob,我怀疑这是因为smartSetter需要在mainActivity的实例上调用,而不仅仅是类本身。有人可以澄清吗?
此外,这个问题似乎是由于应用程序体系结构的糟糕设计造成的,所以我欢迎任何可以帮助我改进设计的建议,以便它更加实用和优雅。
你有没有尝试过让公共静态void smartSetter(...){...}? – Hiral
你指的是“几个不同类的现有实例”究竟是什么?例如。活动,实体对象等?根据答案,你可以使用'startActivityForResult(...)',或者为回调提供一个监听器接口,甚至以匿名方式创建内联对话框并让它在封装活动的成员上工作。 –
@Hiral:那么我不能在静态上下文中做{stuff}。 – JohnEye