2017-03-04 110 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

但是我的类已经扩展到一个活动它显示错误“类不能扩展多个类” –