2017-03-04 111 views
0

我正在研究一個超過10個級別的遊戲,它們都包含相同的「CheckWin()」方法,並且時間太長,並且執行許多操作,如更改值,更新分數,更新時間,改變圖像和所有,所以我想移動「CheckWin()」方法到一個新的類名爲「函數」,所以該方法需要訪問一些視圖,值,對象等等的主要問題,並改變在類中的一些觀點,即調用此方法,現在我做它像Android - 訪問其他類的對象(Java)

//In Level Activity Calling The Method 
    ImageView imageView1 = (ImageView)findViewById(R.id.imageView); 
    Function function = new Funtions(); 

//And In Functions Class Changing Images 

    public void CheckWin() { 
     Level1.imageView1.setVisibility(View.INVISIBLE); 
     Level2.imageView1.setVisibility(View.INVISIBLE); 
     Level3.imageView1.setVisibility(View.INVISIBLE); 
     Level4.imageView1.setVisibility(View.INVISIBLE); 
     Level5.imageView1.setVisibility(View.INVISIBLE); 
     Level6.imageView1.setVisibility(View.INVISIBLE); 
     Level7.imageView1.setVisibility(View.INVISIBLE); 
     Level8.imageView1.setVisibility(View.INVISIBLE); 
     Level9.imageView1.setVisibility(View.INVISIBLE); 
     Level10.imageView1.setVisibility(View.INVISIBLE); 
    } 

但是這給出了一個錯誤,所以我怎麼能檢查哪個級別的用戶和類調用此方法,所以我只能使用一個語句來完成所有這些......就像

public void CheckWin() { 
     ClassThatInvokedThisMethod.imageView1.setVisibility(View.INVISIBLE); 
    } 

回答

0

請使用抽象。

做一個基類與給定的功能和它在你的水平 您可以實現在BaseLevel如果一切都是完全一樣的延長,否則將其覆蓋在你的Level1

public class Level1 extends BaseLevel{ 
... 
    // if implementation is different per class 
    public void checkwin(){ 

    } 
} 

public abstract class BaseLevel extends AppCompatActivity{ 

    public abstract void checkwin(); 
} 

還是喜歡這個

public class Level1 extends BaseLevel{ 
... 
    // if implementation is always the same 

} 

public abstract class BaseLevel extends AppCompatActivity{ 

    public void checkwin(){ 
     // do it here 
    } 
} 
+0

你能舉個例子嗎?我不明白要做什麼:| –

+0

將添加更多代碼 – Stefan

+0

但是我的類已經擴展到一個活動它顯示錯誤「類不能擴展多個類」 –