簡體   English   中英

文本視圖未在Android中設置文本

[英]Text View not setting text in Android

我的問題是,當我嘗試在下面的代碼中設置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.setContentView(R.layout.home); 將無法訪問,因此這些TextViews都不會被設置。 如果要在新活動中設置這些值,則應將它們添加到Intent ,然后在新ActivityonCreate方法中重新打開它們。 例如,在您當前的活動中:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM