繁体   English   中英

非活动类的Android Access活动方法

[英]Android Access Activity Methods From Non-Activity Class

这是我想从Activity类(ActivityName)访问的方法:

public MediaPlayer getBlipComp() {
    return blipComp;
}

编辑

在活动课中

public SingleGameActivity getSingleGameActivity() {
    return this;
}

这在我的SurfaceView类中工作正常:

SingleGameActivity myActivity = ((SingleGameActivity)getContext()).getSingleGameActivity();


// Later in the code 
myActivity.getBlipStart().start();

但是,当我将引用变量传递给ball(普通)类时,它不起作用:

ball = new Ball(myActivity, box.getCenterX(), box.getCenterY(), currentLvl,
            Color.GREEN);

球类

public Ball(SingleGameActivity activity, int xPos, int yPos, int level,
        int color) {
    myActivity = activity;

不能从Ball Class调用此方法,为什么? 解?

myActivity.getBlipPlay().start();

像这样将ActivityName实例传递到NormalClass的构造函数中:

public class NormalClass {
   private ActivityName activity;

   public NormalClass(ActivityName activity){
      this.activity = activity;
   }

   public void doSomething()
   {
      activity.getBlipComp();
   }
}

这行:ActivityName名称= new ActivityName(); 实际上创建了一个新的活动节目。 那不是你想要的。

您必须选择执行以下操作:1.将Activity节目传递给“普通班”,并将其保留为字段:

public class NormalClass {
private Activity myActivity;

并根据需要使用它。

2.只在活动课上做同样的事情。

public class MyActivity extends Activity{

public static Activity myActivity;

并为构造函数分配“ MyActivity.myActivity = this;”

而不是像这样使用静态方法来使用您的活动:

public static MediaPlayer getBlipComp(){
   return myActivity.getBlipComp();
}

而不是像这样使用这种方法:

MyActivity.getBlipComp();

玩得开心!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM