我的问题是,当我尝试在下面的代码中设置 service1 和 service1Health 的文本时,未设置该文本。关于为什么会发生这种情况有什么想法吗? service1Name 和 service1HealthValue 都有有效的字符串值。
public void onClick(View v)
{
switch(v.getId())
{
case R.id.loginButton:
String[] values = new String[2];
String usernameText = ((TextView) activity.findViewById(R.id.usernameTextBox)).getText().toString();
String passwordText = ((TextView) activity.findViewById(R.id.txtPasswordField)).getText().toString();
if (usernameText.length()==0 || passwordText.length()==0)
Toast.makeText(activity, "Please fill in both username and password fields", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(activity, "Connecting to server", Toast.LENGTH_LONG).show();
String loginResult = Server.login(usernameText,passwordText);
values = loginResult.split(",");
Intent i = new Intent(activity,Home.class);
activity.startActivity(i);
activity.setContentView(R.layout.home);
String service1Name = Server.getServices("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
String service1HealthValue = Server.getHealth("myservice","xxxxxxxxxxxxxxxxxxxxxxxxxxx");
TextView service1= ((TextView) activity.findViewById(R.id.serviceName1));
TextView service1Health= ((TextView) activity.findViewById(R.id.service1Health));
service1.setText(service1Name);
service1Health.setText(service1HealthValue);
}
break;
}
}
最佳答案
当您调用activity.startActivity(i);
时,它启动一个新 Activity ,因此此后的任何代码,包括 activity.setContentView(R.layout.home);
将无法到达,因此这些 TextViews
都没有将得到设置。如果您想在新 Activity 中设置这些值,您应该将它们添加到 Intent
,然后在 onCreate
中重新打开它们新方法Activity
。例如,在您当前的 Activity 中:
Intent i = new Intent(activity,Home.class);
i.putExtra("service1Name", Server.getServices("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
i.putExtra("service1HealthValue", Server.getHealth("myservice","xxxxxxxxxxxxxxxxxxxxxxxxxxx"));
activity.startActivity(i);
并且在Home.java
的onCreate方法中,添加以下内容:
setContentView(R.layout.home);
Intent i = getIntent();
if (i != null) {
//This means that the intent passed here was found
String serviceName1 = i.getStringExtra("serviceName1");
String service1HealthValue = i.getStringExtra("service1HealthValue");
TextView service1= ((TextView) activity.findViewById(R.id.serviceName1));
TextView service1Health= ((TextView) activity.findViewById(R.id.service1Health));
service1.setText(service1Name);
service1Health.setText(service1HealthValue);
}
关于java - TextView 未在 Android 中设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864684/