java - TextView 未在 Android 中设置文本

标签 java android textview

我的问题是,当我尝试在下面的代码中设置 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/

相关文章:

android - 如果,带对话框的其他语句出错(下面是我的 Log cat 错误)

java - 将 Android 平板电脑与蓝牙设备配对后使用 logcat

Android 文本样式错误 - 资源不是 ColorStateList

android - 在 textview 中将文本显示为对角线 45

java - 如何使用模拟器或 USB 连接设备(例如 Android Studio)使用 Android 应用程序将文件写入桌面?

java - 为什么我应该在 public static void main(String[] args) 上抛出异常?

android - 使用 AspectRatio android Canvas 缩小大图像

android - 如何根据在android中播放的歌曲显示歌词?

java - 如何使用 REST API 发布 Yammer 民意调查?

java - 如何使用 AS6 在 JMX 中使用 CDI 获取 'JBoss service'?