【问题标题】:How to Dynamically set text to TextView?如何将文本动态设置为 TextView?
【发布时间】:2014-12-09 13:29:43
【问题描述】:

我想在活动开始时显示连接的 ssid 和 ip 地址。它包含一个图像视图(用于标题,因为我没有使用操作栏)和 4 个文本视图(ssid 标签、ssid 值、ipaddr 标签和 ipaddr 值)

我已经测试了获取 ssid 和 ipaddr 的代码,它们运行良好。问题是我无法将它们显示到 TextView 中。

在这段代码中,没有错误,但是当activity启动时,程序崩溃,或者停止工作。

这是我的java代码:

import android.app.Activity;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;

public class ConnectionInfoActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView ssid = (TextView) findViewById (R.id.ssid);
    TextView ip = (TextView) findViewById (R.id.ipaddr);

    ssid.setText(getSsid());
    ip.setText(getIpAddr());

    setContentView(R.layout.activity_connection_info);
}   

// Get the connected network SSID
private String getSsid() {
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    String ssid = null;

    ssid = wifiInfo.getSSID();

    return ssid;
}

// Get the network IP Address
private String getIpAddr() {
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int ip = wifiInfo.getIpAddress();

    String ipString = null;
    ipString = String.format(
        "%d.%d.%d.%d",
        (ip & 0xff),
        (ip >> 8 & 0xff),
        (ip >> 16 & 0xff),
        (ip >> 24 & 0xff));

    return ipString;
    }
}

还有布局xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/coninfo_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

<ImageView
    android:id="@+id/title_conInfo"
    android:layout_width="fill_parent"
    android:layout_height="44.5dp"
    android:src="@drawable/header_coninfo" />

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="20sp"
            android:text="SSID" />
        <TextView
            android:id="@+id/ssid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="20sp"
            android:text="" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="20sp"
            android:text="IP Address" />
        <TextView
            android:id="@+id/ipaddr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="20sp"
            android:text="" />
    </TableRow>
</TableLayout>

【问题讨论】:

  • 您是否记录了这些值并看到它是否记录了正确的信息 abt 网络

标签: android textview settext


【解决方案1】:

您在找到视图后设置内容视图。您应该在之前设置内容视图。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_connection_info);
    TextView ssid = (TextView) findViewById (R.id.ssid);
    TextView ip = (TextView) findViewById (R.id.ipaddr);

    ssid.setText(getSsid());
    ip.setText(getIpAddr());
} 

【讨论】:

  • 哇,它成功了。我花了几个星期来找到解决这个问题的答案,我什至尝试以编程方式编写显示布局。不敢相信答案就这么简单。非常感谢你,约翰 :)
【解决方案2】:

您不能在 setContentView(R.layout.activity_connection_info);

之前对视图元素进行操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2011-12-09
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多