2017-11-03 3 views
0

私の活動は、スニペット:プライベートフィールドで動作する注釈ライブラリですか?

import butterknife.BindView; 
import butterknife.ButterKnife; 

public class DetailsActivity extends AppCompatActivity { 
    @BindView(R.id.productTitleTextView) 
    TextView productTitleTextView; 

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.shopping_details); 
     ButterKnife.bind(this); 
     productTitleTextView.setText("Hello"); 
} 

OK。それはうまくいく。

しかし、このフィールドはプライベートではないので、はカプセル化に違反していると思います。 私は誰にも活動の内側の提出物について知りたくありません。

だから、理想的なソリューションは、このようなsomehingする必要があります:

@BindView(R.id.productTitleTextView) 
private TextView productTitleTextView; 

質問です:

はこれを行うことができますAndroidの注釈libがいますか?

答えて

0

アクセスできなかったためプライベートにすることはできません。 は、あなたのために書くつもりがない定型コードをすべて含んでいるコードを生成します。この場合、ButterKnife.bind(this)と書くと、ここではActivityとなります。注釈付きメンバートラフにアクセスし、明示的キャストでfindViewByIdを実行しようとしています。メンバーが非公開の場合、アクセスできません(基本java)。

+0

おそらく別のアノテーションがありますか? – Alexei

+0

フィールドが公開されているように、私が働いていたライブラリのほとんどは、それらにアクセスできます。他のオブジェクトのためにそれらを非表示にする場合は、findViewByIdを使用することをお勧めします –

関連する問題