2011-04-15 59 views
1

示例1 - 工作簡單的Java問題

public class MainScreen extends Activity implements OnClickListener { 

    public void onClick(View v) { 
     Button touchedButton = (Button) v; 

     Test (MainScreen.this, touchedButton.getId()); 
     } 

    public void Test (MainScreen mainscreen, int touchedButton) { 

    if (touchedButton == R.id.serviceButton) 
    startService(new Intent(mainscreen, SimpleService.class)); 

    if (touchedButton == R.id.cancelButton) 
    stopService(new Intent(mainscreen, SimpleService.class)); 
} 
} 

例2 - 不工作

public class MainScreen extends Activity implements OnClickListener { 

    public void onClick(View v) { 
     Button touchedButton = (Button) v; 

     Secondary.Test (MainScreen.this, touchedButton.getId()); 
      } 
} 


public class Secondary extends Activity { 


public void Test (MainScreen mainscreen, int touchedButton) { 

    if (touchedButton == R.id.serviceButton) 
    startService(new Intent(mainscreen,SimpleService.class)); 

    if (touchedButton == R.id.cancelButton) 
    stopService(new Intent(mainscreen,SimpleService.class)); 
     } 
} 

爲什麼例2不工作?

+5

定義「不工作」 – 2011-04-15 15:48:55

+4

你的意思是,它並沒有編譯,或者它做錯誤的事情在運行時? – 2011-04-15 15:49:03

回答

4

你試圖靜態調用非靜態方法在這條線:

Secondary.Test (MainScreen.this, touchedButton.getId()); 

你需要創建一個實例的Secondary和實例調用Test()或更改Secondary.Test()要像一個靜態方法這樣的:

public static void Test (MainScreen mainscreen, int touchedButton) {