所以我知道之前已经出现过这个问题,但我找不到代码出了什么问题。我有一个我想要更新的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();
}
toast就是这样我才能看到字符串正确出现,而且确实如此。我没有崩溃,没有日志中的错误,没有。 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"));
答案 0 :(得分:0)
实际上,您似乎并不需要创建一个新线程。而不是:
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();
}