私はいくつかのアプリケーション変数を変更したい主なアクティビティとダイアログを持っています。これは残念なことに、いくつかの異なるクラスの既存のインスタンスのプロパティを変更することを含みます。私がしたいことは、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をstatic参照できませんと言っています。 Javaのnoobであることから、smartSetterはmainActivityのインスタンスで呼び出される必要があるため、クラスそのものではないと考えられます。誰か明確にしてもらえますか?
また、この問題はアプリケーションアーキテクチャの設計が貧弱なために発生していると思われますので、より使いやすくエレガントになるように設計を改善する助けとなることを歓迎します。
public static void smartSetter(...){...} ?? – Hiral
"いくつかの異なるクラスの既存のインスタンス"を正確に参照していますか?例えば。アクティビティ、エンティティオブジェクトなど?答えに応じて、 'startActivityForResult(...)'を使って十分に答えるか、コールバックのためのリスナインタフェースを提供するか、匿名でインラインでダイアログを作成し、カプセル化アクティビティのメンバで動作させることもできます。 –
@Hiral:それから私は静的な文脈では{できない}ことはできません。 – JohnEye