我仍然习惯了Windows手机环境,因此我去了很多谷歌搜索等等。我已经被困在某事上几天了,我给它休息一下,做点别的事情再回过头来。 由于nullpointerexepctions,我的应用程序会因打开而崩溃。弹出此代码的代码位于一个仅在滑块更改时运行的函数
功能是
private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
myMediaElement.Volume = (double)changeVolume.Value;
}
它将myMediaElement作为问题说明为null。如果我断断续续,一切正常。有没有办法阻止这个被打开?
答案 0 :(得分:2)
最有可能是在构建UI时遇到此事件。如果您在XAML中附加changeVolume_ValueChanged
,那么任何随机组件很可能尚未出现。例如,myMediaElement
可以为null(即因为它在XAML中进一步定义为changeVolume
)等。
最简单的是,只需添加空检查:
private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if(myMediaElement != null)
myMediaElement.Volume = (double)changeVolume.Value;
}
(顺便说一句,changeVolume
不会为空,因为它是它的处理程序)
更复杂的解决方案是在整个UI初始化后才注册该处理程序。但是,如果你使用模板,它会变得复杂,我不认为它在这里真的值得。
答案 1 :(得分:1)
首先检查null:
private void changeVolume_ValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> e)
{
if (myMediaElement != null) myMediaElement.Volume = (double)changeVolume.Value;
}