Просмотр текста не настройка текста в Android - PullRequest
0 голосов
/ 26 марта 2012

моя проблема в том, что когда я пытаюсь установить текст 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;
    }
}

1 Ответ

2 голосов
/ 26 марта 2012

Когда вы вызываете activity.startActivity(i);, он запускает новое действие, поэтому любой код после этого, включая activity.setContentView(R.layout.home);, не будет достигнут, поэтому ни один из этих TextViews не будет установлен. Если вы хотите установить эти значения в новом действии, вы должны добавить их к Intent, а затем снова открыть их в методе onCreate нового Activity. Так, например, в вашей текущей деятельности:

Intent i = new Intent(activity,Home.class);
i.putExtra("service1Name", Server.getServices("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
i.putExtra("service1HealthValue", Server.getHealth("myservice","xxxxxxxxxxxxxxxxxxxxxxxxxxx"));
activity.startActivity(i);

И в методе onCreate Home.java добавить следующее:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...