2016-12-09 3 views
0

これは簡単な答えですが、Butterknifeを最大限に活用しようとすると、findViewByIdの一部を@BindViewsに変換し、宣言する必要があるビューでBindViewを使用できないことに気付きましたJavaは '変数' x 'が初期化されていない可能性があるというエラーが発生するため、最終的にAndroid、Butterknife、BindView、Final

明らかに、私はBindViewを使う必要はありませんが、Javaについてもっと知るためには、これについて興味があります。私は最後の宣言が何を意味するかについて少しは読んだが、Butterknifeに戻すことはできなかった。助けてくれてありがとう。

答えて

1

バターナイフには関係ありません。 finalとして宣言されたmemberを初期化したい場合は、宣言の瞬間かコンストラクタのどちらかで行うことができます。 findViewByIdの場合、Butterknifeの場合、これらの2つのオプションはテーブルから外れています。いずれの場合も、有効なcontextオブジェクトを必要とするfindViewByIdオブジェクトを使用し、setContentViewの後に正常に使用でき、finalメンバの初期化には2つの条件が満たされません。 、は、コード生成を使用し、シーンの後ろに、それはまだあなたが正常に

+0

を行うように、これはコードで動作するように見えるfindViewByIdを使用することに注意してください: 最終のEditText randomvar =(のEditText)activityReference.findViewById(R.id.randomID ); – nschwan94

+0

メソッドの中とsetContetViewの後では、もちろん動作します。 – Blackbelt

+0

コードの行はアクティビティの外部のクラスの内部で呼び出されますが、参照されるアクティビティにはsetContentViewが呼び出されているので、混乱が生じます。 – nschwan94

関連する問題