我正在开始一个活动开始的意图,取决于设备是组所有者还是加入的同伴。目前,instructIntent尚未初始化。我建议将其设为null吗?或者是否有更专业的Java代码风格处理方式?
Intent instructIntent;
if (info.groupFormed && info.isGroupOwner) {
Log.d(WiFiDirectActivity.TAG, "DeviceDetailFragment_onCreateView: btn_ready pressed on host");
instructIntent = new Intent(getActivity(), LeaderActivity.class);
} else if (info.groupFormed) {
Log.d(WiFiDirectActivity.TAG, "DeviceDetailFragment_onCreateView: btn_ready pressed on client");
instructIntent = new Intent(getActivity(), MusicianActivity.class);
}
instructIntent.putExtra(Intent.EXTRA_TEXT, "Play");
instructIntent.putExtra(MusicService.EXTRAS_GROUP_OWNER_ADDRESS, info.groupOwnerAddress.getHostAddress());
instructIntent.putExtra(MusicService.EXTRAS_GROUP_OWNER_PORT, 8080);
startActivity(instructIntent);
答案 0 :(得分:1)
将其设为null无济于事。真正的问题是如果info.groupFormed为false,则instructIntent中没有有效值。但即使您将其初始化为null,它仍然无效。这意味着当你在其中调用putExtra时会抛出异常。更好的方法是:
if(info.groupFormed){
if(info.isGroupOwner){
instructIntent = new Intent(getActivity(), LeaderActivity.class);
}
else{
instructIntent = new Intent(getActivity(), MusicianActivity.class);
}
//all of your putExtra and startIntent calls here
}
请注意,转到对intent的put和start调用的所有分支都将创建一个新intent。这样,您就不会尝试调用成员函数的null或unitnitialized变量。
答案 1 :(得分:-1)
在使用它之前,在java中声明的任何变量都应该赋值。在上面给出的代码中,如果if和else都不满足条件,我们就不会为instructIntent变量赋值。
所以你必须将instructIntent初始化为null,如下所示。
Intent instructIntent = null;