Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改对话框中的变量_Java_Android - Fatal编程技术网

Java 更改对话框中的变量

Java 更改对话框中的变量,java,android,Java,Android,我有一个主活动和一个对话框,通过它我想更改一些应用程序变量。不幸的是,这包括更改几个不同类的现有实例的属性。我想做的是调用我的主活动的一个方法,该方法将处理更改活动的变量和修改类的现有实例。在我的对话框中,我调用 mainActivity.smartSetter(variableName, variableValue); 在我的活动中,我有 public void smartSetter(variableName name, float value) { switch (name) {

我有一个主活动和一个对话框,通过它我想更改一些应用程序变量。不幸的是,这包括更改几个不同类的现有实例的属性。我想做的是调用我的主活动的一个方法,该方法将处理更改活动的变量和修改类的现有实例。在我的对话框中,我调用

mainActivity.smartSetter(variableName, variableValue);
在我的活动中,我有

public void smartSetter(variableName name, float value) {
    switch (name) {
    case Name1: {do stuff}
    case Name2: {do stuff}
    //etc
}
编译器说我不能对非静态方法smartSetter进行静态引用。作为一个JavaNoob,我怀疑这是因为需要在mainActivity的实例上调用smartSetter,而不仅仅是类本身。有人能澄清一下吗


此外,这个问题似乎是由于应用程序体系结构的设计不当造成的,因此我欢迎任何有助于我改进设计的建议,使其更加实用和优雅。

也许这个
smartSetter
应该作为一个整体来实现。我认为这符合您的需要。

您是否尝试过公开静态void smartSetter(…){…}??对于“几个不同类的现有实例”,您到底指的是什么?例如活动、实体对象等。?根据答案,您可以使用
startActivityForResult(…)
,或者为回调提供侦听器接口,甚至匿名内联创建对话框,并使其在封装活动的成员上工作。@Hiral:那么我就不能{do stuff}在静态上下文中。@MH:基本上,我正在修改运行Box2D simulation及其动态实体的属性。事实证明,稍微调整一下对话框构造函数可能就足以让我的概念发挥作用。我以后再看。实际上,我在其他地方也遇到过这种选择,但我希望能有一些简单快捷的方法。无论如何,谢谢你。