0

我正在使用Thread以更新 UI。
我有一个基本的注册表,在输入地址时要求输入国家。我在具有摘要的最终屏幕上显示这两个值。

现在,有一个Edit按钮可以编辑我想要在各个字段中检索国家/地区值的信息,因此我使用以下方法。

但它的工作不一致,即有时两者都被填充,有时其中之一,有时没有。

请注意我ViewFlipper在我的应用程序中使用(我不知道它是否有任何关系)。

我从一天开始就在敲我的头,但没有找到任何解决方案/建议。

任何帮助表示赞赏。

Thread thread = new Thread() {
                    public void run() {
                        while (true) {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    setState.setText(dispState.getText());
                                    setCountry.setText(dispCoun.getText());
                                }
                            });
                            constants.threadCount =0;
                            try {
                                if (constants.threadCount == 0)
                                    Thread.sleep(500);
                                    constants.threadCount = 1;
                                } else {
                                    break;
                                }
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                };
                thread.start();

编辑

edit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
// DO SOMETHING
// Starting Thread
vf.setDisplayedChild(9);
}
});
4

1 回答 1

0

以下为我工作:

constants.threadCount = 0;
                final Handler handler=new Handler();
                final Runnable r = new Runnable()
                {
                    public void run() 
                    {
                        if (constants.threadCount <4) {
                            setState.setText(dispState.getText());
                            setCountry.setText(dispCoun.getText());

                        handler.postDelayed(this, 1000);
                        constants.threadCount++;
                        }
                    }
                };

                Thread threadnew = new Thread()
                {
                    @Override
                    public void run() {
                        try {
                            if (constants.threadCount <4) {
                                sleep(1000);
                                handler.post(r);
                                constants.threadCount++;
                            }
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                };

                threadnew.start();
于 2013-02-12T12:07:19.787 回答