所以我知道这个问题以前已经提出,但是我找不到我的代码出了什么问题。我有一个要更新的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] 删除。
我来说两句