Android runOnUiThread()不更新TextView

德本斯

所以我知道这个问题以前已经提出,但是我找不到我的代码出了什么问题。我有一个要更新的TextView和一个我想使其不可见的Button,以便可以看到它正在工作。在我的onCreate中,我有:

setMessage("Welcome, " + pref.getString("fName", "User"));

该调用我创建的方法:

private void setMessage(final String input)
{
    this.input = input;
    runOnUiThread(new Runnable()
    {
    @Override
    public void run() {
            message.setText(input);
            create.setVisibility(4);
        }
    });
    Toast.makeText(this, input, Toast.LENGTH_LONG).show();
}

敬酒只是为了使我可以看到字符串正确输出,而且可以。我没有崩溃,日志中没有错误,什么也没有。Textview在我的Strings.xml中设置为一个字符串,该字符串为“ Hello World!”。活动开始后,它会读取该消息,但是该按钮仍然可见,并且不会出现要烤面包的消息。我究竟做错了什么?顺便说一下,输入是一个字符串。

我的变量:

private TextView message;
private Button create;
private SharedPreferences pref;
private int norecurs = 0;
private Bundle state;
private Handler handler;
private String input;

我在onCreate()中没有的所有代码:

pref = getSharedPreferences("login", 0);
    message = (TextView) findViewById(R.id.message);
    create = (Button) findViewById(R.id.button1);
    input = "Welcome, " + pref.getString("fName", "User");
    setMessage("Welcome, " + pref.getString("fName", "User"));
用户名

老实说,这似乎并不需要您创建一个新线程。代替:

pref = getSharedPreferences("login", 0);
message = (TextView) findViewById(R.id.message);
create = (Button) findViewById(R.id.button1);
input = "Welcome, " + pref.getString("fName", "User");
setMessage("Welcome, " + pref.getString("fName", "User"));

您应该写:

pref = getSharedPreferences("login", 0);
message = (TextView) findViewById(R.id.message);
create = (Button) findViewById(R.id.button1);
input = "Welcome, " + pref.getString("fName", "User");

// Just set the text in your onCreate
message.setText("Welcome, " + pref.getString("fName", "User"));

但是,如果您确实要保留该setMessage方法,只需将其更改为:

private void setMessage(String input)
{
    this.input = input;

    message.setText(input);
    create.setVisibility(4);

    Toast.makeText(this, input, Toast.LENGTH_LONG).show();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android runOnUiThread()不更新TextView

来自分类Dev

Android runOnUiThread不异步

来自分类Dev

Asynctask 不更新 Fragment 中的 TextView(Android)

来自分类Dev

持续更新android Textview

来自分类Dev

Android:TextView无法更新

来自分类Dev

Android TextView无法更新

来自分类Dev

TextView不返回任何Android

来自分类Dev

Android updateAppWidget不更新

来自分类Dev

Android getLastKnownLocation不更新

来自分类Dev

Android Sqlite 不更新

来自分类Dev

用更新的TextView Android替换TextView

来自分类Dev

Android-定期更新TextView

来自分类Dev

Android无法从onPostExecute更新TextView

来自分类Dev

从回调更新Android TextView

来自分类Dev

Android TextView未完全更新

来自分类Dev

在Android Studio中更新textView

来自分类Dev

Android runOnUiThread执行顺序

来自分类Dev

Android runOnUiThread线程安全

来自分类Dev

Android:runOnUiThread混合输出

来自分类Dev

Android Asynctask 和 runOnUiThread

来自分类Dev

Android runOnUiThread() 线程波动

来自分类Dev

Android CountDownTimer太快了,无法更新textView

来自分类Dev

Android TextView在单击按钮时未更新

来自分类Dev

Android TextView即使在调试时也不会更新

来自分类Dev

android从Asynctask更新listview中行的textview

来自分类Dev

如何从Android中的countdowntimer更新textview?

来自分类Dev

我在Android中的TextView没有更新

来自分类Dev

Android从其他活动更新TextView

来自分类Dev

从异步更新 UiThread 上的 TextView - Android