首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在启动线程时更改按钮的文本?

如何在启动线程时更改按钮的文本?
EN

Stack Overflow用户
提问于 2017-10-13 00:11:02
回答 1查看 73关注 0票数 0

我在MainACtivity类的onCreate方法中有这段代码:

代码语言:javascript
复制
setContentView(R.layout.activity_main);

Button button1 = (Button)findViewById(R.id.button1);
button1.setText("Start");

final baresipThread thread = new baresipThread();

button1.setOnClickListener(new View.OnClickListener() {
    boolean running = false;
    @Override
    public void onClick(View v) {
        if (!running) {
            ((Button)v).setText("Stop");
            thread.start();
            running = true;
        } else {
            thread.kill();
            running = false;
            ((Button)v).setText("Start");
        }
    }
});

baresipThread类看起来像这样:

代码语言:javascript
复制
package com.tutpro.baresip;

public class baresipThread extends Thread {

    public void run() {
        baresip_start();
    }

    public void kill() {
        baresip_kill();
    }

    public native void baresip_start();
    public native void baresip_kill();

}

如果从代码中删除thread.start()/thread.kill()调用,则每次按下按钮时都会切换按钮的文本。但是如果包括线程调用,当我按下按钮时,按钮的文本(最初是Start)没有变化。线程启动正常。

为什么文本没有更改,以及如何更改?

EN

回答 1

Stack Overflow用户

发布于 2017-10-13 00:42:49

使用下面的代码

代码语言:javascript
复制
 final boolean running = false;
    final baresipThread thread = new baresipThread();
    button1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (!running) {
            ((Button)v).setText("Stop");
            thread.start();
            running = true;
        } else {
            thread.kill();
            running = false;
            ((Button)v).setText("Start");
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46714303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档