我遇到以下问题。 我有下面的代码行:何时在活动中调用findViewById
Spinner domainSpinner = (Spinner) findViewById(R.id.domain);
domainSpinner.setVisibility(View.VISIBLE);
这些获得在UI上的菜单项,用户点击后执行。所以我很确定用户界面是在屏幕上绘制的。微调器应该在屏幕上,并且已经填充了数据。 菜单项是更改屏幕的语言。微调者应该用新选择的语言填充项目。
在GooglePlay中,我有时会得到一个错误报告,其中stackTrace在第二行中给出一个NullPointerException。所以它必须是domainSpinner为空。
我从来没有经历过这个问题。我们还使用该应用的测试版本供我们自己使用,而且我的同事们都没有遇到过这个问题。
我不知道为什么findViewById有时应该返回null。我已经试过往回转,旋转......但我从来没有这个问题。
请注意,项目R.id.domain可以通过编程方式设置GONE的可见性。但我也玩过这个,但不能重现这个问题。
代码菜单项行动:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.action_nl)
{
changeLanguage("nl", true);
return true;
}
else if (id == R.id.action_fr)
{
changeLanguage("fr", true);
return true;
}
else if (id == R.id.action_en)
{
changeLanguage("en", true);
return true;
}
else if (id == R.id.action_de)
{
changeLanguage("de", true);
return true;
}
return super.onOptionsItemSelected(item);
}
请在按钮上分享设置onClickListener的代码片段。 –
在“onPause”调用之后是否有可能调用代码段?也许通过一些异步机制。 – DeeV
可能是某种竞赛状况,例如在某些设备中,当调用者视图被调用时,它不会添加到视图树中。 –