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,需要把变量放在外面。谢谢你的回答:)