【发布时间】:2013-11-02 22:31:08
【问题描述】:
我一直在寻找答案,并且尝试了很多东西,但没有任何效果......
所以,我在做我认为是一个简单的应用程序(我刚开始学习)
所以我有一个活动将几个字符串发送到另一个,其中几个 TextView 应该将它们的值更改为新的字符串,但这没有发生。这里有代码:
public class LoginActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
Intent intent = getIntent();
String mail = intent.getStringExtra(MainActivity.MAIL);
String password = intent.getStringExtra(MainActivity.PASSWORD);
setContentView(R.layout.fragment_login);
TextView displayMailSetter = (TextView) findViewById(R.id.mailView);
displayMailSetter.setText(mail);
displayMailSetter.postInvalidate();
TextView displayPasswordSetter = (TextView)findViewById(R.id.passwordView);
displayPasswordSetter.setText(password);
displayPasswordSetter.postInvalidate();
displayMailSetter.postInvalidate();
setContentView(R.layout.activity_login);
}
}
【问题讨论】:
-
您不需要在 onCreate 中调用 postInvalidate()。 postInvalidate() 表示视图发生了变化,需要重新绘制,但是在onCreate中,还没有绘制完成(并且postInvalidate是用于非UI线程的)。
-
那我不明白它是如何工作的。我有几个 TextViews,只是为了位置方便而在 XML 中设置的。由于没有文字,我在这里更改了它们的值,但它没有在模拟器中更新。我尝试在 xml 中给出一些默认值,然后这些值出现了,所以它似乎没有更新 GUI(没有 NullPointer 错误)