2012-02-21 92 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()方法之外。

相關問題