Android - 访问其他类的对象(Java)

时间:2017-03-04 13:14:02

标签: java android

我正在制作一个游戏,它有超过10个关卡,都包含相同的" CheckWin()"方法,这太长了,并做了很多东西,如更改值,更新分数,更新时间,更改图像等所有,所以我想移动" CheckWin()"一个名为"函数"的新类的方法,所以该方法需要访问一些视图,值,对象等的主要问题...并在调用此方法的类中更改一些视图,现在我&# 39;我喜欢

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

1 个答案:

答案 0 :(得分: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
    }
}