为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2022-06-30 11:55:41
我想让随机字符在按钮中切换,直到您按下停止按钮。当您按下停止按钮时,随机字符将显示为按钮文本。我设法做到这一点的唯一方法是使用线程。但是我有问题,它工作了 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);        }*/
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

使用Handler对象从另一个线程更新 UI 元素。

请参阅此问题以获取示例 How to textView.setText from Thread?


查看完整回答
反对 回复 2022-06-30
?
守着一只汪

TA贡献1872条经验 获得超4个赞

我想看看你的错误日志。通过阅读代码,我会说您的问题是您正在尝试从不是 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)


查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号