Java 如何在运行时编译代码

Java 如何在运行时编译代码,java,android,compilation,runtime,Java,Android,Compilation,Runtime,我想要使用一些视图ID,并且我想要一个循环来遍历所有视图ID。 我的意思是: for (int i = 0;i<10;i++) { TextView tv = (TextView) findViewById(R.id.txt+i); } 我希望循环执行如下操作: TextView tv = (TextView) findViewById(R.id.txt0); TextView tv = (TextView) findViewById(R.id.txt1); . . . Text


我想要使用一些视图ID,并且我想要一个循环来遍历所有视图ID。 我的意思是:

for (int i = 0;i<10;i++) {
    TextView tv = (TextView) findViewById(R.id.txt+i);
}
我希望循环执行如下操作:

TextView tv = (TextView) findViewById(R.id.txt0);
TextView tv = (TextView) findViewById(R.id.txt1);
.
.
.
TextView tv = (TextView) findViewById(R.id.txt+9);
for(int i=0;i<10;i++){
     int id = getResources().getIdentifier("txt" + i, "id", context.getPackageName());
     TextView tv = findViewById(id);
     // but what here?
}
有可能吗

谢谢

试试这个

TextView tv = new TextView(context); 
将标记设置为循环索引,并通过标记访问它

TextView[] tv=new TextView[10];
for (int i = 0;i<10;i++) {
    tv[i] = (TextView) findViewById(R.id.txt+i);
 tv[i].setId(1000+i);

}
TextView[]tv=newtextview[10];

对于(int i=0;i您可以按名称找到ID,如下所示:

TextView tv = (TextView) findViewById(R.id.txt0);
TextView tv = (TextView) findViewById(R.id.txt1);
.
.
.
TextView tv = (TextView) findViewById(R.id.txt+9);
for(int i=0;i<10;i++){
     int id = getResources().getIdentifier("txt" + i, "id", context.getPackageName());
     TextView tv = findViewById(id);
     // but what here?
}

用于(int i=0;i不起作用。操作R.id.txt+i发生在运行时,因为需要在编译时设置正确的引用,所以不能只增加id。id和引用的资源之间没有相关性。实际上,这可能会起作用,因为在编译时分配的视图id常量往往是连续的。但它会如果你想为textview设置id,那么使用textview[]tv=newTextView[10];for(int i=0;i@Nguyễ南曲ế  这只是巧合,因为TextView在XML中是按顺序列出的,但这并不能保证,简单地重新排列XML将破坏现有代码。谷歌也可能会更改生成ID的算法,而现有代码将再次被破坏。这没有文档记录,而且显然是错误的做法。请不要这样做I don’我不会一直把它作为解决方案,因为它是错误的。谢谢!这正是我需要的。我正在尝试设计一个小部件,你必须用它的ID访问每个
TextView
。然后,我设置每个
TextView