无法发出静态引用错误

时间:2015-04-20 04:39:13

标签: java android ontouchlistener ontouchevent ontouch

所以我会发布给出错误的代码,如果有人知道为什么这不起作用让我知道,并给出解释。 (不要只是说这是编码或其他方式的坏方法)(或者至少如果你自己解释的话)。因此,当有人点击的颜色为真时,下面的代码应该切换到另一个屏幕!

public boolean onTouch(View v, MotionEvent event) {
   int x = (int) event.getX();
   int y = (int) event.getY();
   if(isInsideCircle(x, y) ==  true){
      //Do your things here
       if(redColor == lastColor){
// error is here   Intent i = new Intent(this, YouFailed.class);
// and here        Activity.startActivity(i);
       } else {
           addPoints++;
       }
   }else {

   }
   return true;
}

有两个错误:

构造函数Intent(DrawingView, Class<YouFailed>)未定义

无法对类型为Activity

的非静态方法startActivity(Intent)进行静态引用

3 个答案:

答案 0 :(得分:3)

使用v访问startActivity方法,而不是尝试non-static方式调用static方法:

Intent i = new Intent(v.getContext(), YouFailed.class);
v.getContext().startActivity(i);

答案 1 :(得分:0)

似乎错误就在这里,

   Intent i = new Intent(this, YouFailed.class);

因为在Intent构造函数中,您的第一个参数是DrawingView,而应该是

  

Intent动作,例如ACTION_VIEW。

所以将此更改为

   Intent i = new Intent(v.getContext(), YouFailed.class);

答案 2 :(得分:0)

尝试使用您的活动上下文代替内联类上下文:

Intent i = new Intent(YourActivity.this, YouFailed.class);
YourActivity.startActivity(i);