这是我想从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();
答案 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();
玩得开心!