Android 为什么我没有定义setId()

Android 为什么我没有定义setId(),android,Android,使用setId(D)时,会收到以下错误消息: The method setId() is undefined for the type MainActivity 如果在这种情况下无法使用setId(),是否有其他方法动态设置TextView的ID main活动: ... public void onClick(View view) { ... if (D>=0) {screen();} D=D+1; } public void screen() { setId(D);

使用
setId(D)
时,会收到以下错误消息:

The method setId() is undefined for the type MainActivity
如果在这种情况下无法使用
setId()
,是否有其他方法动态设置
TextView
的ID

main活动:

...
public void onClick(View view) {
  ...
  if (D>=0) {screen();}
  D=D+1;
}

public void screen()  {
  setId(D);
  if (D==0) {
    TextView D = (TextView) findViewById(R.id.D);
    D.setText("the button was pressed: " +D+ "time");
  }
}
...

// I dont want to write twenty conditions
if (D==1) {
    TextView D1 = (TextView) findViewById(R.id.1);      
    D1.setText("some text" +num);
    }       
if (D==2) {
    TextView D2 = (TextView) findViewById(R.id.2);      
    D2.setText("some text" +num) ;
    }
if (D==3) {
    TextView D3 = (TextView) findViewById(R.id.3);      
    D3.setText("some text" +num) ;
    }
// and so on...
<TextView        
  android:id="@+id/1"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="20dp" />

<TextView        
  android:id="@+id/2"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="40dp" />

<TextView
  android:id="@+id/3"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="60dp" />

...
活动\u main.xml:

...
public void onClick(View view) {
  ...
  if (D>=0) {screen();}
  D=D+1;
}

public void screen()  {
  setId(D);
  if (D==0) {
    TextView D = (TextView) findViewById(R.id.D);
    D.setText("the button was pressed: " +D+ "time");
  }
}
...

// I dont want to write twenty conditions
if (D==1) {
    TextView D1 = (TextView) findViewById(R.id.1);      
    D1.setText("some text" +num);
    }       
if (D==2) {
    TextView D2 = (TextView) findViewById(R.id.2);      
    D2.setText("some text" +num) ;
    }
if (D==3) {
    TextView D3 = (TextView) findViewById(R.id.3);      
    D3.setText("some text" +num) ;
    }
// and so on...
<TextView        
  android:id="@+id/1"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="20dp" />

<TextView        
  android:id="@+id/2"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="40dp" />

<TextView
  android:id="@+id/3"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:layout_alignParentLeft="true"
  android:layout_marginTop="60dp" />

...

...

ID不是用来更改或用作变量的。对于附加到视图的元数据,您可能需要查看view.tag

还可以通过标记检索视图


请注意,存储计数器还有其他方法。通常活动中的一个简单字段就足够了。

因为
活动
没有
setId()
方法。您需要在
视图
或类似视图上使用它。但是,看看你的代码,我对你在做什么感到困惑。身份证不应该用作柜台。谢谢你的回答。它不会是一个计数器,因为它被缩短了。每个文本视图将根据另一种算法以文本和数字填写。谢谢。当我写信给詹姆斯时,我希望得到文本和数字,这些文本和数字将根据另一个函数进行动态更改。结果(文本/数字)应该一个接一个地显示在屏幕上,例如十行。看起来它可以工作。“undefined getId()”消失了,但我得到了另一个错误:“D无法解析或不是字段”。Thanksim不确定
D
在您的代码中来自何处,但是最好使用
textview\u D
而不是另一个
D
(请参见编辑)D应该是textview ID的参考,例如:如果D=1使用android执行textview:ID=“@+ID/1”如果D=2使用android执行textview:ID=“@+ID/2”