我目前有一个命令,允许用户在单击按钮时进入下一页,此按钮具有我在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)
答案 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)。