になります。以前は奇妙なクラッシュがありましたが、クラッシュレポーターにはこれらのログがあります。 You can find the entire class here, where the variable is called "sPaint" (it was static initially).プライベートメンバ変数は、私は私のAndroidアプリでこのようになりますクラスを持つヌル
は、以前は「ペイント」を「静的ファイナル」として宣言されましたが、私は内部で再びそれを割り当てるために「最終」それを削除する必要がありましたヌルチェック。 Staticはずっと前に削除されていましたが、問題が "最終"だったときにも問題は発生しました。
私のキャリアでは、以前は静的メソッドや変数を扱う際に、初期化順序に奇妙な問題がありましたが、何も静的でなく割り当てられていないので、何が起こるのか全く分かりません。
私の唯一の推測は、線に沿ったものです:私のメソッドは、いくつかのオーバーロードされたレイアウトメソッドから呼び出されます。
@Override public void setPadding(int left, int top, int right, int bottom) { super.setPadding(left, top, right, bottom); init(); }
リフレクションなどを使用して、クラスが初期化される前にメソッドを見つけて呼び出すことは可能ですか?
と最後に:はい、コードは醜い、確かに非常に古く、おそらく完全な書き換えを使用することができますが、それは問題少ない奇妙な:)
誰が 'aNonStaticMethod'を呼び出しますか?そのプライベートアクセスによって暗示されるように、常に同じクラス(MyButton)から呼び出されますか? – Eran
あなたはどこでこのメソッドを呼び出していますか? –
'Paint'コンストラクタで何か問題が起こることはありますか? – Keppil