使用eclipse和Android SDK,我使用Button和ProgressBar管理了一个简单的测试应用程序。所有运行都很好,除了我不希望ProgressBar移动Button,当ProgressBar可见时,所以只是为了测试我更改了它们在res / layout / main.xml文件中定义的顺序(使用了LinearLayout中)。编译并运行我然后在下面的“final 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。我不明白......
答案 0 :(得分:20)
尝试清理项目,以便再次生成R类。有时价值观不会更新。
答案 1 :(得分:6)
看起来像这一行:
final ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressBar1); /* here */
正在将一个Button转换为进度条。
这意味着findViewById
会返回R.id.progressBar1
的按钮。
由于您说您更改了订单,因此该ID仍然对应于该按钮。这表明生成的文件存在问题。 我会做一个Project / Clean 。