在main.xml中更改顺序,现在我得到ClassCastException

使用eclipse和Android SDK,我使用Button和ProgressBarpipe理了一个简单的testing应用程序。 所有的运行良好,除了我不想让ProgressBar移动button,当ProgressBar变得可见时,所以只是为了testing,我改变了它们在res / layout / main.xml文件中定义的顺序(使用LinearLayout中)。 编译并运行,然后在下面的“最后的ProgressBar …”行中得到一个ClassCastException。

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 01-06 14:37:39.590: E/AndroidRuntime(863): java.lang.RuntimeException: java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.ProgressBar */ final ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressBar1); /* here */ progressbar.setVisibility(ProgressBar.GONE); final Button exebutton = (Button)findViewById(R.id.button1); exebutton.setOnClickListener(new View.OnClickListener() // etc... 

现在,我明白了ClasCastException所说的意思,我只是不明白为什么会出现。 我不是试图将一个button转换为ProgressBar。 我不明白

Solutions Collecting From Web of "在main.xml中更改顺序,现在我得到ClassCastException"

尝试清理项目,以便R类再次生成。 有时价值不更新。

它看起来像这样一行:

 final ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressBar1); /* here */ 

正在将button投射到进度条。

这意味着findViewById返回R.id.progressBar1的button。

既然你说你改变了顺序,这看起来这个ID仍然对应着button。 这指出生成的文件有问题。 我会做一个项目/清洁