2012-02-21 88 views
1

这是我的代码,我试图让多个图像在屏幕上滑动。 “TimerTask thisTimerTask = new ThisClass();”中的“ThisClass”线。我很欣赏背部提供为什么我在尝试引用某个类时遇到“无法解析为类型”错误 - Android

package your.package2.namespace2; 

import java.util.Timer; 
import java.util.TimerTask; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Display; 
import android.widget.Button; 
import android.widget.ImageView; 
@SuppressWarnings("unused") 

public class ChangeuppicksActivity extends Activity { 

Display thisDisplay; 
ImageView img, img4, img5, img7; 
Timer timer; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    thisDisplay = getWindowManager().getDefaultDisplay(); 
    TimerTask thisTimerTask = new ThisClass(); 
    timer = new Timer(); 
    timer.scheduleAtFixedRate(thisTimerTask, 1000, 16); 

    img = (ImageView) findViewById(R.id.pic1); 
    img4 = (ImageView) findViewById(R.id.pic4); 
    img5 = (ImageView) findViewById(R.id.pic5); 
    img7 = (ImageView) findViewById(R.id.pic7); 
} 

public void doSomething() { 
    int slideToPOS_X = (img.getLeft() - 7); 
    if (slideToPOS_X <= -img.getWidth()) { 
    int slideToPOS_X2 = (img4.getLeft() - 5); 
    if (slideToPOS_X2 <= -img4.getWidth()) { 
     slideToPOS_X2 = thisDisplay.getWidth(); 
    } 

    img.layout(slideToPOS_X, 0, (slideToPOS_X + img.getWidth()), (0 + img.getHeight()));; 

    img4.layout(slideToPOS_X2, 0, (slideToPOS_X2 + img4.getWidth()), (0 + img4.getHeight())); 
} 


class ThisClass extends TimerTask { 
    @Override 
    public void run() { 
     ChangeuppicksActivity.this.runOnUiThread(new Runnable() { 

      public void run() { 
       doSomething(); 
      } 
     }); 
    } 
} 
} 
} 
+0

你能提供一些有关ThisClass的信息吗?它是TimerTask的子类? – 2012-02-21 21:31:22

+0

试着让你的'ThisClass' _public_。 – 2012-02-21 21:36:26

+0

据我所知,子类必须是静态的,所以尝试公共静态类ThisClass ...但我不完全确定这是否会解决问题。 – m1ntf4n 2012-02-21 21:40:52

回答

0

不知道这是你的问题的根本原因,但看起来你有你的班上成绩最差的一个太多的密切括号任何饲料。尝试删除类的底部的'}',看看是否让你的编译器更快乐。

您的doSomething()方法中还缺少一个右括号。我可能会打破你的逻辑,但尝试与此更换底部:

public void doSomething() { 
int slideToPOS_X = (img.getLeft() - 7); 
if (slideToPOS_X <= -img.getWidth()) { 
    int slideToPOS_X2 = (img4.getLeft() - 5); 
} 
if (slideToPOS_X2 <= -img4.getWidth()) { 
    slideToPOS_X2 = thisDisplay.getWidth(); 
} 

img.layout(slideToPOS_X, 0, (slideToPOS_X + img.getWidth()), (0 + img.getHeight()));; 

img4.layout(slideToPOS_X2, 0, (slideToPOS_X2 + img4.getWidth()), (0 + img4.getHeight())); 
} 


class ThisClass extends TimerTask { 
@Override 
    public void run() { 
     ChangeuppicksActivity.this.runOnUiThread(new Runnable() { 

      public void run() { 
       doSomething(); 
      } 
     }); 
    } 
} 
} 
0

一个是在结束了近括号是多余的,我觉得应该有一个额外的支架关闭DoSomething的方法。就目前来看,ThisClass是在doSomething方法内部定义的 - doSomething的第二行有一个开放的括号,直到类的末尾才关闭,由于代码没有在开头括号之后缩进,所以很难看到。

0

移动ThisClass定义在doSomething()方法之外。

相关问题