对象对象的Nullpointer异常

时间:2012-09-02 17:24:16

标签: android

我从市场上的应用程序收到错误,在对话框中显示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
}
...

我的问题是

  1. 是否可以在此处声明对象(如果是TextView),在本地,而不是在TextView dialogtext2;之外的全局声明,并且只在此处写dialogtext2 = (TextView) dialog.findViewById (R.id.tvCBTresult2); ?

  2. 我有4个4个密度的文件夹:layout-ldpi,layout-mdpi,layout-hdpi,layout-xhdpi。 layout-xhdpi文件夹中的xml不包含dialogtext2 TextView。这会导致错误吗?当另一个密度文件夹中的同一个xml中缺少一个对象时,android不会从另一个密度文件夹中应用xml吗?

  3. 还有什么可以成为错误的根源?

1 个答案:

答案 0 :(得分:0)

如果你在那里使用findViewById()没有问题。但是,似乎R.id。 tvCBTresult2 不在你正在使用的布局中( R.layout.cbtdialog

  

layout-xhdpi文件夹中的xml不包含dialogtext2 TextView。这会导致错误吗?

这可能是因为Android无法找到dialigtext2的问题(你正在使用带有xhdpi屏幕的设备。

  

当另一个密度文件夹中的同一个xml中缺少某个对象时,android是否会从另一个密度文件夹中应用xml?

实际上,当找不到文件时(不是单个元素),Android会在另一个文件夹中搜索。