4

なぜそれが起こるのかわかりません:

次のコードを書くと:

TextView textView = new TextView(this);
textView.setId(1);

1 as id が機能せず、次のような警告が表示されます。

ここに画像の説明を入力

次の値では機能しません。

textView.setId(0+1);   // Valid
textView.setId(var++); // Valid even var=0

しかし、有効ではありません

textView.setId(1);     // Invalide

これについて知っている人はいますか?誰でもこのことを説明できますか?

4

2 に答える 2

1

この警告はandroid lintによって生成されます。正しいタイプの ID を識別子として使用していることを確認します。この関数の署名は次のとおりです。

public void setId(@IdRes int id)

したがって、lint は、 @ColorResまたは@StringResではなく、タイプの正確な id を使用していることを確認します ( IdRes アノテーション@IdResを参照) ( class の定数を使用していることを確認します) 。R.id

0+1orのような式を使用するとvar++(ところで、結果は実際には 1 ではなく 0 になります)、lint が引数の型を推測するのを妨げています。

于 2016-04-11T10:12:11.640 に答える