Android - 线程问题(随机字符在按钮中切换,直到单击按钮)

我想让随机字符在按钮中切换,直到您按下停止按钮。当您按下停止按钮时,随机字符将显示为按钮文本。我设法做到这一点的唯一方法是使用线程。但是我有问题,它工作了 3-4 次,但是当我第三次或第四次打开活动时,应用程序崩溃了。我不知道为什么会这样。我需要帮助来解决这个问题。如果有人知道一些没有线程的方法并想提供帮助,我将不胜感激。


这是应用程序的图片:点击


public class NajduzaRec extends AppCompatActivity {


    private int brojac = 0;

    String randomLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    //char[] randomLetters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'Z', 'Ž', 'Č', 'Ć', 'Đ', 'Š'};

    private boolean threadRunning=true;

    Random r = new Random();


    private static ManualResetEvent mre = new ManualResetEvent(false);


    EditText unosReciTxt;

    Button stopBtn, slovo1Btn,slovo2Btn,slovo3Btn,slovo4Btn,slovo5Btn,slovo6Btn,slovo7Btn,slovo8Btn,slovo9Btn,slovo10Btn,slovo11Btn,slovo12Btn;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_najduza_rec);


        stopBtn = (Button)findViewById(R.id.stopBtn);

        slovo1Btn = (Button)findViewById(R.id.slovo1Btn);

        slovo2Btn = (Button)findViewById(R.id.slovo2Btn);

        slovo3Btn = (Button)findViewById(R.id.slovo3Btn);

        slovo4Btn = (Button)findViewById(R.id.slovo4Btn);

        slovo5Btn = (Button)findViewById(R.id.slovo5Btn);

        slovo6Btn = (Button)findViewById(R.id.slovo6Btn);

        slovo7Btn = (Button)findViewById(R.id.slovo7Btn);

        slovo8Btn = (Button)findViewById(R.id.slovo8Btn);

        slovo9Btn = (Button)findViewById(R.id.slovo9Btn);

        slovo10Btn = (Button)findViewById(R.id.slovo10Btn);

        slovo11Btn = (Button)findViewById(R.id.slovo11Btn);

        slovo12Btn = (Button)findViewById(R.id.slovo12Btn);


        unosReciTxt = (EditText)findViewById(R.id.unosReciTxt);

        /*while(brojac==0) {

            char randomChar = randomLetters.charAt(r.nextInt(randomLetters.length()));

            slovo1Btn.setText("" + randomChar);

        }*/


皈依舞
浏览 154回答 2
2回答

烙印99

使用Handler对象从另一个线程更新 UI 元素。请参阅此问题以获取示例 How to textView.setText from Thread?

守着一只汪

我想看看你的错误日志。通过阅读代码,我会说您的问题是您正在尝试从不是 UI 线程的线程更新 UI 项。要快速测试和解决您的问题,只需将您的 button.setText 放在 runUIThread 块中。要从另一个线程与 UI 线程通信,您可以使用 Handler。文档: https : //developer.android.com/training/multiple-threads/communicate-ui https://developer.android.com/reference/android/app/Activity#runOnUiThread(java.lang.Runnable)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java