Android 安卓:按钮方法只能工作一次

Android 安卓:按钮方法只能工作一次,android,button,onclicklistener,Android,Button,Onclicklistener,我对Android的Java非常陌生(所以请不要打我),我对我的按钮操作有一个问题。被调用的方法只运行一次。当我第二次点击按钮时,什么也没发生。我不明白为什么。没有错误,没有缺陷,方法是按预期进行的。有什么提示吗? 谢谢 public类MainActivity扩展AppCompatActivity实现View.OnClickListener{ TextView主视图和TextView; 按钮主按钮; 专用整数计数器,i,x; //私有整数随机数; @凌驾 创建时受保护的void(Bundle s

我对Android的Java非常陌生(所以请不要打我),我对我的按钮操作有一个问题。被调用的方法只运行一次。当我第二次点击按钮时,什么也没发生。我不明白为什么。没有错误,没有缺陷,方法是按预期进行的。有什么提示吗? 谢谢

public类MainActivity扩展AppCompatActivity实现View.OnClickListener{
TextView主视图和TextView;
按钮主按钮;
专用整数计数器,i,x;
//私有整数随机数;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
//1.访问布局XML中定义的文本视图
//然后设置它的文本
mainFortuneTextView=(TextView)findViewById(R.id.fortuneTextView);
//2.访问布局XML中定义的按钮
//在这里用“this”来听
MainFortune按钮=(按钮)findViewById(R.id.Fortune按钮);
mainButton.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
//在主视图中的按钮操作时发生
runThread();
随机rnd=新随机();
x=rnd.nextInt(11)+1;
}
私有void runThread(){
main按钮。设置启用(false);
新线程(){
公开募捐{
而(i++<10){
试一试{
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
mainFortuneTextView.setText(“#”+i);
}
});
睡眠(100);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
//再次激活按钮
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
MainFortune按钮。设置启用(true);
}
});
}
}.start();
}
}

while中使用的变量
i
是一个字段。这意味着它不会重置。这就是为什么第二次调用线程时,
i
值将为10,并且不会再次调用它。在启动新线程之前,必须再次重置
i

while中使用的变量
i
是一个字段。这意味着它不会重置。这就是为什么第二次调用线程时,
i
值将为10,并且不会再次调用它。在开始一个新的线程之前,你必须再次重置你的
i

好吧,这与我对Android的陌生感无关,这简直是愚蠢透顶!谢谢!天哪,我现在需要喝一杯!好吧,这与我对安卓系统的陌生感无关,这完全是愚蠢!谢谢!天哪,我现在需要喝一杯!
public class MainActivity extends AppCompatActivity implements View.OnClickListener {


TextView mainFortuneTextView;
Button mainFortuneButton;

private int counter, i, x;
//private int randomNumber;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // 1. Access the TextView defined in layout XML
    // and then set its text
    mainFortuneTextView = (TextView) findViewById(R.id.fortuneTextView);

    // 2. Access the Button defined in layout XML
    // and listen for it here by using "this"
    mainFortuneButton = (Button) findViewById(R.id.fortuneButton);
    mainFortuneButton.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    // happens on button action in main view

    runThread();

    Random rnd = new Random();
    x = rnd.nextInt(11) + 1;
}

private void runThread() {

    mainFortuneButton.setEnabled(false);

    new Thread() {
        public void run() {
            while (i++ < 10) {
                try {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            mainFortuneTextView.setText("#" + i);
                        }
                    });
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            // activate button again
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    mainFortuneButton.setEnabled(true);
                }
            });
        }

    }.start();


}


}