java Android开发编译正常,运行时崩溃
我对发展很陌生。我正在构建简单的安卓应用程序作为培训。请考虑下面的代码:
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case R.id.menu0:
MenuItem input0 = (MenuItem) findViewById(R.id.menu0);
String string0 = input0.getTitle().toString();
Toast.makeText(this, string0, Toast.LENGTH_LONG).show();
return true;
case R.id.menu1:
MenuItem input1 = (MenuItem) findViewById(R.id.menu0);
String string1 = input1.getTitle().toString();
Toast.makeText(this, string1, Toast.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
此方法的目的是通过由菜单元素中包含的文本组成的祝酒词来显示用户按下了菜单的两个元素中的哪一个(正如我所说,这只是为了培训;)
Android Studio(Windows上的3.1.2)的编译器以绿灯退出(无错误),apk可以安装在真实设备上,但当按下菜单的一个元素时,应用程序崩溃(销毁)
如果我用硬编码字符串更改string0
和string1
,请说:
Toast.makeText(this, "Settings", Toast.LENGTH_LONG).show();
应用程序运行正常
你知道这种行为的原因吗?谢谢
# 1 楼答案
这可能是因为它试图制作并显示一个包含空内容的toast。要么findViewById根本找不到元素,要么getTitle()什么也得不到,这就是硬编码字符串的工作方式