我从市场上的应用程序收到错误,在对话框中显示TextView。错误是
java.lang.NullPointerException
at com.b2creativedesigns.eyetest.ColorBlindTest1$2.onClick(ColorBlindTest1.java:324)
部分代码是:
btnNext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GlobalVars.setPoints(points);
dialog = new Dialog(ColorBlindTest1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.cbtdialog);
TextView dialogtext = (TextView) dialog.findViewById (R.id.tvCBTresult);
TextView dialogtext2 = (TextView) dialog.findViewById (R.id.tvCBTresult2);
Button btnQuit = (Button) dialog.findViewById (R.id.btnCTBback);
Button btnFB = (Button) dialog.findViewById (R.id.btnCBTFB);
Button btnMarket = (Button) dialog.findViewById (R.id.btnCBTMarket);
if (points >= 14)
{
dialogtext.setText("Your result is " + points + "/15!");
dialogtext.setTextColor(Color.rgb(19, 20, 111));
dialogtext2.setText("Something"); //error line
}
...
我的问题是
是否可以在此处声明对象(如果是TextView),在本地,而不是在TextView dialogtext2;
之外的全局声明,并且只在此处写dialogtext2 = (TextView) dialog.findViewById (R.id.tvCBTresult2);
?
我有4个4个密度的文件夹:layout-ldpi,layout-mdpi,layout-hdpi,layout-xhdpi。 layout-xhdpi文件夹中的xml不包含dialogtext2 TextView。这会导致错误吗?当另一个密度文件夹中的同一个xml中缺少一个对象时,android不会从另一个密度文件夹中应用xml吗?
还有什么可以成为错误的根源?
答案 0 :(得分:0)
如果你在那里使用findViewById()没有问题。但是,似乎R.id。 tvCBTresult2 不在你正在使用的布局中( R.layout.cbtdialog )
layout-xhdpi文件夹中的xml不包含dialogtext2 TextView。这会导致错误吗?
这可能是因为Android无法找到dialigtext2的问题(你正在使用带有xhdpi屏幕的设备。
当另一个密度文件夹中的同一个xml中缺少某个对象时,android是否会从另一个密度文件夹中应用xml?
实际上,当找不到文件时(不是单个元素),Android会在另一个文件夹中搜索。