0

我从市场上的一个应用程序中收到一个错误消息,发送到对话框中的 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),而不是全局声明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?

还有什么可能是错误的根源?

4

1 回答 1

0

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

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

这可能是问题,因为 Android 找不到 dialigtext2(您使用的是带有 xhdpi 屏幕的设备。

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

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

于 2012-09-02T17:48:43.350 回答