【发布时间】:2016-05-14 01:11:03
【问题描述】:
我收到这条错误消息说Variable "snackbar" might not have been initialized。
以下是我的 MainActivity.java 代码的一部分:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info != null && info.isConnected()) {
final Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "WiFi change detected; updating information...", Snackbar.LENGTH_LONG)
.setAction("DISMISS", new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
}
});
snackbar.setActionTextColor(Color.BLUE);
snackbar.show();
getWifi();
}
}
}
我已阅读接受的 Stack Overflow 答案 here,它建议我在 public class NetworkChangeReceiver extends BroadcastReceiver 之后立即初始化 snackbar。因此,我将代码更改为:
/* no changes here */
@Override
public void onReceive(Context context, Intent intent) {
Snackbar snackbar = null;
/* no changes here */
if (...) {
snackbar = Snackbar.make(...);
}
/* no changes here */
}
但这给了我一个错误Variable "snackbar" is accessed from within inner class, needs to be declared final 和一个警告Method invocation "snackbar.dismiss()" may produce "java.lang.NullPointerException"。
关于如何解决这个问题的任何建议?谢谢!
【问题讨论】: