所以我知道这个问题出现之前,但我找不到我的代码出了什么问题。我有一个我想更新的TextView,以及一个我想隐藏的Button,这样我就可以看到它正在工作。在我的onCreate我:Android runOnUiThread()没有更新TextView
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"));
首先,我强烈建议使用常量“View.INVISIBLE”而不是“int”。其次,如果你从'onCreate()'调用它,你不需要runOnUiThread(),因为它已经在主线程上运行了。 – codeMagic
显示你实际进行调用的代码'setMessage(“Welcome,....'。看起来你甚至都没有调用它,因为Toast没有出现。 – Randy
如果你看到'Toast'这意味着你已经在UI线程上并且不需要'runOnUiThread' – tyczj