1

ビューを拡張するクラス DrawView を作成しました。そのクラスに、int 配列として格納されているポイントを使用してグラフを描画したいので、 グローバル変数の宣言方法の助けを借りて、この配列を一種のパブリック変数のように作成しました。アクティビティで MyApp に接続し、配列を変更したい場合は、単に使用します

MyApp appState = ((MyApp)getApplicationContext());

しかし問題は、 DrawView.javaクラスで呼び出したときにこれが機能しないことです。これを解決する方法はありますか?

4

1 に答える 1

1

それが良い解決策ではないので、なぜその答えが賛成票を投じられたのか、私には本当にわかりません。Application オブジェクトは、アプリケーションを実行するためのものであり、データを保存するためのものではありません。単純な Singleton オブジェクトを使用すると、これをはるかに簡単に解決できます。これを試してください。

    public Class MyData{

        private int[] data;
        private static MyData me;

        public int[] getData(){
           return data;
        }

        private MyData(){} // private constructor

        public MyData get() {}
            if(me==null) me = new MyData();
            return me;
        }
    }

あなたが呼び出すことができるどのオブジェクトからよりも:

    int[] data = MyData.get().getData()

int[] だけでなく、自由に展開してください...グローバルにアクセスできるようにしたい他のオブジェクトを配置してください。ただし、コンテキストへの参照を保持しないでください。

于 2012-12-11T16:34:45.700 に答える