gpt4 book ai didi

java - 变量 'snackbar' 可能尚未初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:58 24 4
gpt4 key购买 nike

我收到此错误消息,指出变量“snackbar”可能尚未初始化

以下是我的 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".

关于如何解决这个问题有什么建议吗?谢谢!

最佳答案

拆分链接的方法调用:

final Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "WiFi change detected; updating information...", Snackbar.LENGTH_LONG);
snackbar.setAction("DISMISS", new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
}
});

这样,在您创建 OnClickListener 之前肯定会分配 snackbar

关于java - 变量 'snackbar' 可能尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com