I am getting this error message saying that Variable "snackbar" might not have been initialized
.
The following is part of my MainActivity.java code:
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();
}
}
}
I had read the accepted Stack Overflow answer here and it suggests that I initialize snackbar
immediately after public class NetworkChangeReceiver extends BroadcastReceiver
. So, I changed the code to:
/* no changes here */
@Override
public void onReceive(Context context, Intent intent) {
Snackbar snackbar = null;
/* no changes here */
if (...) {
snackbar = Snackbar.make(...);
}
/* no changes here */
}
But this gives me an error Variable "snackbar" is accessed from within inner class, needs to be declared final
and a warning Method invocation "snackbar.dismiss()" may produce "java.lang.NullPointerException"
.
Any suggestions on how to solve this? Thanks!