来自非活动类的Android Access活动方法

时间:2014-08-03 13:02:50

标签: java android

这是我想从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(normal)-class时,它不起作用:

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;

这种方法不能从球类中调用,为什么?解吗

myActivity.getBlipPlay().start();

2 个答案:

答案 0 :(得分:0)

将ActivityName实例传递给NormalClass的构造函数,如下所示:

public class NormalClass {
   private ActivityName activity;

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

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

答案 1 :(得分:-1)

这一行:     ActivityName name = new ActivityName(); 实际上创建了一个新的Activity show。 那不是你想要的。

您必须选择执行此操作: 1.将活动节目传递给“普通类”并将其保存为字段:

public class NormalClass {
private Activity myActivity;

并根据需要使用它。

2.仅在活动类中相同。

public class MyActivity extends Activity{

public static Activity myActivity;

和int构造函数赋值“MyActivity.myActivity = this;”

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

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

并且比这样使用这个方法:

MyActivity.getBlipComp();

玩得开心!