【问题标题】:Unfortunately, <project name> has stopped不幸的是,<项目名称> 已停止
【发布时间】:2014-01-16 03:58:39
【问题描述】:
我希望 Android 获取 Wifi 路由器名称。 MainActivity.java 有这个代码。但是当我运行我得到以下错误不幸的是,已经停止。谢谢
WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String WifiName = wifiInfo.getSSID();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView outputWifiName = (TextView) findViewById(R.id.sysInf);
outputWifiName.setText(WifiName);
}
private Activity getActivity() {
// TODO Auto-generated method stub
return null;
}
【问题讨论】:
标签:
java
android
android-wifi
【解决方案1】:
你的 getActivity 返回 null 你应该在 onCreate 中初始化 wifiMgr
WifiManager wifiMgr =null;
WifiInfo wifiInfo = null;
String WifiName = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiMgr= (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiInfo = wifiMgr.getConnectionInfo();
WifiName = wifiInfo.getSSID();
TextView outputWifiName = (TextView) findViewById(R.id.sysInf);
outputWifiName.setText(WifiName);
}
【解决方案2】:
你在这行调用getActivity' but at the same time override it to returnnull.
This results in aNullPointerException`:
WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
【解决方案3】:
这一行
WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
这将是一个问题,因为您在创建 Activity 之前调用了 getActivity()。将该初始化以及随后的以下初始化移至onCreate()。
String WifiName;
WifiInfo wifiInfo;
WifiManager wifiMgr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Move those guys to here
wifiMgr = (WifiManager)
getActivity().getSystemService(Context.WIFI_SERVICE);
wifiInfo = wifiMgr.getConnectionInfo();
WifiName = wifiInfo.getSSID();
TextView outputWifiName = (TextView) findViewById(R.id.sysInf);
outputWifiName.setText(WifiName);
}