作为主题说我正在寻找一种方法来首先运行如果首先点击按钮然后运行下一步如果点击按钮 这是我试过的
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,第二个将运行,
但问题是在第一个按钮点击它运行第一个if
然后增加变量并运行下一个if
我希望它只在第一次点击时运行。我怎么能用这种方法做到这一点?
使用case
是否更好,如果是,请举一个例子
提前谢谢
答案 0 :(得分:0)
您需要将VB scripts
作为班级的成员变量。所以在你班级的某个地方你必须像
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");
}
}
答案 1 :(得分:0)
每次用户点击按钮时,您都会ds_numbers
x
1 。
将equal
放在x
方法的之外,问题就解决了!
答案 2 :(得分:0)
步骤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和然后Voila!另一个if可以执行的块。