允许对“if语句”的命令满足

时间:2014-05-22 17:30:52

标签: android

我目前有一个命令,允许用户在单击按钮时进入下一页,此按钮具有我在android:onClick="advancenext"文件中定义的功能.java以下

public void advancenext (View view) {
    Intent intent = new Intent(Prompt1.this, Prompt2.class);
    Prompt1.this.startActivity(intent);
}

但是,如果变量advancenext大于5,我只希望用户拨打i。这就是我尝试的内容

if (i>5) {
    public void advancenext (View view) {
            Intent intent = new Intent(Prompt1.this, Prompt2.class);
            Prompt1.this.startActivity(intent);
    }
}

然而,当我运行应用程序时,即使我不超过5,我仍然可以前进。有没有人知道如何解决这个问题,或者更好地以不同的方式限制advancenext

编辑感谢您提供了很好的答案,但是当我更改语句时遇到了不同的错误。当我尝试:

            public void advancenext (View view) {
                if (i>5) {
                    Intent intent = new Intent(Prompt1.this, Prompt2.class);
                    Prompt1.this.startActivity(intent);
                }
            }

我在Syntax error on token "(", ; expected的{​​{1}}和Syntax error on token ")", ; expected周围收到错误()

EDIT dos 这是我的完整代码

(View view)

3 个答案:

答案 0 :(得分:0)

您必须在函数内部评估if语句。确保您可以访问i变量。

public void advancenext(View view) {
    if (i>5) {
         Intent intent = new Intent(Prompt1.this, Prompt2.class);
         Prompt1.this.startActivity(intent);
    }
}

答案 1 :(得分:0)

你的声明倒退了:

public void advancenext (View view) {
    if (i>5) {
        Intent intent = new Intent(Prompt1.this, Prompt2.class);
        Prompt1.this.startActivity(intent);
    }
}

无论如何都应该调用onClick()函数,然后检查条件。你现在拥有它的方式,你完全忽略了if语句。

答案 2 :(得分:0)

我会这样做

public class Prompt1 extends Activity implements OnTouchListener{

int i; //Variable i stores the touch number
float[] X, Y;  //Array that will store the touchpoints
int ultscore1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_prompt1);

    i=1;

    touchLayout.setOnTouchListener(this);

}

@Override
public boolean onTouch(View v, MotionEvent event){
    i++; //increasing i value
    advancenext(v);
    return true;
} 

public void advancenext (View view) {
    if (i>5) {
       Intent intent = new Intent(Prompt1.this,     Prompt2.class);
        Prompt1.this.startActivity(intent);
    }
}
}              

这允许您的类通过将触摸侦听器添加到视图来直接处理触摸事件(以及类集内容视图中包含的视图的任何其他触摸事件)。您可以像处理onTouch中的变量i一样递增,并使用传递给onTouch的视图调用advancenext方法。方法advancenext可以很容易地将其功能转移到onTouch,即

@Override
public boolean onTouch(View v, MotionEvent event){
    i++; //increasing i value
    if (i>5) {
       Intent intent = new Intent(Prompt1.this,     Prompt2.class);
        Prompt1.this.startActivity(intent);
    }
    return true;
}  

但是将onTouch中的功能移植到它自己的方法中将允许你将advancenext与其他io事件一起使用(如onClick)。