Java Android-如果在第二个按钮上单击,则运行下一个
正如主题所说,我正在寻找一种方法,在单击按钮时先运行,然后在单击按钮时运行 这是我试过的Java Android-如果在第二个按钮上单击,则运行下一个,java,android,Java,Android,正如主题所说,我正在寻找一种方法,在单击按钮时先运行,然后在单击按钮时运行 这是我试过的 final Button button = (Button) findViewById(R.id.welcomeButton); final TextView textView = (TextView) findViewById(R.id.welcomeText); button.setOnClickListener(new OnClickListener() { @Override pub
final Button button = (Button) findViewById(R.id.welcomeButton);
final TextView textView = (TextView) findViewById(R.id.welcomeText);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View p1)
{
int x = 1;
if (x == 1)
{
textView.setText(R.string.step1);
button.setText("Next");
// heres increment of the variable x so on next click x will be 2 and the next if will be run instead
x++;
}
if (x == 2)
{
textView.setText(R.string.step2);
button.setText("Next");
}
}
});
如您所见,第一个if
上有一个增量,因此它增加了变量x,下次单击该按钮时,x为2,第二个将运行,
但问题是在第一个按钮单击时,它运行第一个如果
,然后增加变量并运行下一个如果
我希望它在第一次单击时首先运行。我怎样才能用这种方法做到这一点?
是否最好使用案例
如果是,请给我一个例子
提前感谢您需要将
x
设置为类的成员变量。所以在你的课堂上,你必须这样定义它
private int x = 1;
然后将onClick
方法更改为
@Override
public void onClick(View p1)
{
if (x == 1)
{
textView.setText(R.string.step1);
button.setText("Next");
// heres increment of the variable x so on next click x will be 2 and the next if will be run instead
x++;
}
if (x == 2)
{
textView.setText(R.string.step2);
button.setText("Next");
}
}
每次用户单击按钮时,您可能也需要将
x
重置到某个地方将x
设置为相等的1
将x
置于onClick
方法的之外,问题将得到解决 步骤1:您需要将x设置为类的成员变量,否则它将始终初始化为1:
private int x = 1;
步骤2:让我们看一下代码。因此,可以删除x的声明和初始化
final Button button = (Button) findViewById(R.id.welcomeButton);
final TextView textView = (TextView) findViewById(R.id.welcomeText);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View p1)
{
//int x = 1; //Now a member variable of the class.
if (x == 1)
{
textView.setText(R.string.step1);
button.setText("Next");
// heres increment of the variable x so on next click x will be 2 and the next if will be run instead
x++;
}
else if (x == 2) //if (x == 2) Done so that once it checks the first if it will just move on
{
textView.setText(R.string.step2);
button.setText("Next");
}
}
});
我在你的问题所在旁边做了一个评论。
这是因为您使用的是if而不是else if。
当代码运行时,无论是否执行了其中一个if块,都会检查所有if条件。所以在这个例子中,你递增,然后程序检查下一个if,然后瞧!另一个可以执行的if块。问题是,您有一个变量,它的生存时间与您的onClick
一样长。这意味着每次单击该按钮时,一个值为1的新x
将被初始化,因此您的增量不会增加work@0xDEADC0DE哦所以这是个问题。那我怎么能用另一种方式呢?谢谢。if
语句总是true
。IDE一定在向你尖叫<代码>整数x=1在@Override
行(不是在方法内部,而是在OnClickListener
内部)和如果(x==2)
到否则如果(x==2)
@snachmsm在匿名类中工作吗?谢谢。它成功了,我也用else-if替换了第二个if到第一个if是的,我通过上面的答案发现了我的错误,而且我需要用else-if代替第二个if。哥们,给一个-1分并不好我不是专家每个人在学习和编码时都会犯错误:(是的,这就是解决方案。上面的两篇帖子回答了相同的问题,在评论中我说我需要else if,需要把变量放在外面。谢谢你的回答:)