我收到错误:
12-27 20:53:21.874: W/ResourceType(829): Skipping entry 0x106000d in package table 0 because it is not complex!
代码:
private void change(final String txt , final int res , final int max , int seconds , final boolean s) {
i = 1;
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if(i <= max){
int resourceId = getResources().getIdentifier(txt.replaceAll("i", String.valueOf(i).toString()), "id", getPackageName());
ImageButton imageButton = (ImageButton) findViewById(resourceId);
imageButton.setBackgroundResource(res);
if(s) {sound();}
i++;
}else{
this.cancel();
timer.cancel();
}
}
},0,seconds);
}
private void change2(final int res , final int c ,final int r , final int seconds , final boolean s) {
i = 1;
u = 1;
final Timer timer1 = new Timer();
timer1.schedule(new TimerTask() {
@Override
public void run() {
if(i <= c){
final Timer timer2 = new Timer();
timer2.schedule(new TimerTask() {
@Override
public void run(){
if(u <= r){
int resourceId = getResources().getIdentifier("c"+i+"_r"+u, "id", getPackageName());
ImageButton imageButton = (ImageButton) findViewById(resourceId);
imageButton.setBackgroundResource(res);
if(s) {sound();}
u++;
}else{
this.cancel();
timer2.cancel();
}
}
},0,seconds);}else{
this.cancel();
timer1.cancel();
}
}
},0,seconds);
}
public void onClickNext(View v){
change2(R.drawable.white_circle,left_num,right_num,250,false);
change("c"+left_num+"_ri", R.drawable.red_circle , right_num , 500 , true);
change("c"+left_num+"_ri", R.drawable.white_circle , right_num , 500 , false);
change("ci"+"_r"+left_num, R.drawable.green_circle , left_num , 500 , true);
change("ci"+"_r"+left_num, R.drawable.white_circle , left_num , 500 , false);
change2(R.drawable.yellow_circle,left_num,right_num,250,true);
}
并且在xml中我有10x10 ImageButton
,c1_r1
到c10_r10
,当c是Column
且r是Raw
。
因为我有很多ImageButton
个,所以我试图通过字符串获取id。
我使用Timer
和TimerTask
在下次更改前暂停一段时间。
如有任何问题,请在评论中输入。
很抱歉复杂的代码。
答案 0 :(得分:0)
这是一个警告。除非您遇到导致应用程序崩溃等问题,否则请忽略它。操作系统记录了我们作为开发人员不得不忽略的各种东西。如果您有任何问题,请检查此链接: http://thesoftwarerogue.blogspot.com/2010/12/skipping-entry-in-package-table-0.html
更新: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String,java.lang.String,java.lang.String)
public int getIdentifier (String name, String defType, String defPackage)
在API级别1中添加
返回给定资源名称的资源标识符。完全限定的资源名称的格式为"package:type/entry".
如果在此处指定了defType和defPackage,则前两个组件(包和类型)是可选的。
注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。