2014-06-24 32 views
0

我有两个类,一个名为Menu的类和一个名为circleGame的类。当我运行我的应用程序时,Menu类将启动并在屏幕上创建一个矩形。当用户点击屏幕时,我想让我的程序切换到我的circleGame类(circleGame类具有与我的Menu类完全相同的代码,除了绘制一个圆而不是矩形)。我想使用Activity.setContentView方法来做到这一点,但是当我尝试使用该方法时,我得到一个错误:“无法对类型为Activity的非静态setContentView(View)进行静态引用。”我的代码如下所示:如何将setContentView设置为扩展视图的新类android

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(测试);我知道我可以把这两个代码放在一起做一个大文件,但是如果我以后有一个大文件,那么当我开始有很多代码时,我的代码会变得混乱。

回答

0

由于错误状态,setContentView不是静态方法,而是实例方法Activity。您只能在某些特定活动实例上设置ContentView。

如果您从活动代码创建您的Menu实例,则可以在构造函数中传递Activity实例,并稍后使用它。不过,重新设计代码以使用Observer Pattern会更好。

相关问题