【发布时间】:2015-10-20 07:30:40
【问题描述】:
我的问题是,在我的 MainActivity 的 onCreate() 方法中,我正在创建新的 Thread 对象,我想向该对象传递对 this 活动的引用,然后在该线程中使用它来调用 getSystemService()。但最后,当我启动应用程序时它崩溃了,我得到了 NullPointerException。
我已经发现问题可能是我在 super.onCreate() 之前传递了对活动的引用,但是在我的代码中 super.onCreate() 是在传递引用之前执行的。
这是我的 MainActivity 的 onCreate() 方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Instance which contains thread for obtaining wifi info
final WifiInfoThread wifi_info = new WifiInfoThread(this);
....
}
这是 Thread 类,我试图在其中获取对系统服务的引用
public class WifiInfoThread extends Thread {
// Constructor for passing context to this class to be able to access xml resources
Activity activity;
WifiInfoThread(Activity current) {
activity = current;
}
// Flag for stopping thread
boolean flag = false;
// Obtain service and WifiManager object
WifiManager current_wifi = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
// Runnable object passed to UIThread
Runnable uirunnable = new Runnable() {
@Override
public void run() {
// Get current wifi status
WifiInfo wifi_info = current_wifi.getConnectionInfo();
// Things with showing it on screen
TextView tv_output = (TextView) activity.findViewById(R.id.tv_output);
String info = "SSID: " + wifi_info.getSSID();
info += "\nSpeed: " + wifi_info.getLinkSpeed() + " Mbps";
tv_output.setText(info);
}
};
public void run() {
flag = true;
for(; flag; ) {
activity.runOnUiThread(uirunnable);
try {
this.sleep(500);
}
catch(InterruptedException e) {}
}
}
}
【问题讨论】:
-
尊敬的投票者,用户刚刚创建了一个帐户并提出了一个问题,不要急于投票。也许编辑或评论会更受欢迎。
标签: android android-activity nullpointerexception