【问题标题】:Why do I get a "cannot be resolved to a type" error when trying to refer to a class - android为什么在尝试引用类时出现“无法解析为类型”错误 - android
【发布时间】:2012-02-21 21:27:21
【问题描述】:

这是我的代码,我试图让多个图像在屏幕上滑动。在“TimerTask thisTimerTask = new ThisClass();”中为“ThisClass”显示特定错误线。我感谢任何可用的反馈

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();
            }
        });
    }
}
}
}

【问题讨论】:

  • 你能提供一些关于ThisClass的信息吗?它是 TimerTask 的子类?
  • 试着把你的ThisClass设为public
  • 据我所知,子类必须是静态的,所以试试 public static class ThisClass... 但我不完全确定这是否能解决问题。

标签: android class


【解决方案1】:

不确定这是否是您的问题的根本原因,但看起来您的班级底部有太多右括号。尝试删除类底部的“}”之一,看看这是否会让你的编译器更快乐。

您的 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();
            }
        });
    }
}
}

【讨论】:

    【解决方案2】:

    最后的一个右括号是多余的,我认为应该有一个额外的括号来关闭 doSomething 方法。就目前而言,ThisClass 是在 doSomething 方法中定义的 - doSomething 的第二行有一个开括号,直到类结束才关闭,这很难看到,因为代码在开括号后没有缩进。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多