我有两个类,一个名为Menu的类和一个名为circleGame的类。当我运行我的应用程序时,启动Menu类并在屏幕上创建一个矩形。当用户点击屏幕时,我希望我的程序切换到我的circleGame类(circleGame类与我的Menu类具有完全相同的代码,除了它绘制圆形而不是矩形)。我想使用Activity.setContentView方法执行此操作,但是当我尝试使用该方法时,我收到一条错误消息,“无法从类型Activity中对非静态setContentView(View)进行静态引用。”我的代码如下所示:
public class Menu extends View{
Paint blue = new Paint(), black = new Paint();
Display display;
//Width of the user's screen.
int screenWidth;
//Height of the user's screen.
int screenHeight;
public Menu(Context context) {
super(context);
blue.setColor(Color.BLUE);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = wm.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
black.setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
//Setting the background color to white.
canvas.drawColor(Color.WHITE);
canvas.drawRect(0, screenHeight/2, screenWidth, screenHeight/1.5f, blue);
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
if(event.getAction() == event.ACTION_UP){
circleGame test = new circleGame(getContext());
Activity.setContentView(test);
}
return true;
}
}
我的错误发生在我写的onTouchEvent侦听器的行上:Activity.setContentView(test);我知道我可以将两个代码组合在一起制作一个大文件,但是如果我以后在开始使用大量代码时只有一个大文件,那么我的代码会变得混乱。
答案 0 :(得分:0)
由于错误状态,setContentView
不是静态方法,而是Activity
的实例方法。您只能在某个特定活动实例上设置.ContentView。
如果您从活动代码创建Menu
实例,则可以在构造函数中传递Activity
实例,稍后再使用它。但是,重新设计代码以使用Observer Pattern。