奇怪的错误:在包表0中跳过条目0x106000d因为它不复杂

时间:2013-12-28 02:21:51

标签: java android runtime-error

我收到错误:

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 ImageButtonc1_r1c10_r10,当c是Column且r是Raw

因为我有很多ImageButton个,所以我试图通过字符串获取id。

我使用TimerTimerTask在下次更改前暂停一段时间。

如有任何问题,请在评论中输入。

很抱歉复杂的代码。

1 个答案:

答案 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,则前两个组件(包和类型)是可选的。

注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。