2012-01-06 4 views
9

Eclipse와 Android SDK를 사용하여 Button과 ProgressBar가있는 간단한 테스트 응용 프로그램을 관리했습니다. ProgressBar가 보이도록 만들어 졌을 때, ProgressBar가 Button을 움직이게하지 않기를 바랄뿐입니다. 그래서 테스트를 위해서 res/layout/main.xml 파일에 정의 된 순서를 변경했습니다. LinearLayout). 컴파일하고 실행하면 아래 "최종 ProgressBar ..."행에서 ClassCastException이 발생합니다.main.xml의 순서가 바뀌 었습니다. 이제 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 말한다하고 나타나는 이유 수단, 난 그냥 이해하지 못하는 것을 이해합니다. 나는 ProgressBar에 Button을 던지려고하지 않습니다. 나는 그것을 얻지 못한다. ...

+0

main.xml 파일도 추가 할 수 있습니까? ProgressBar로 Button을 캐스팅하려고하는 것 같습니다. – Ivan

+1

아니, 적어도, 의식적으로 (게시물을 참조) 아니에요. 업데이트되지 않은 R.java입니다 (아래 참조). – OppfinnarJocke

+0

프로젝트 정리 및 재 구축을 시도하십시오. main.xml 파일을 붙여 넣으면 다른 문제가 있는지 확인할 수 있습니다 (한 객체를 제거한 다음 다시 추가해보십시오). 청소를 위해 – Ivan

답변

20

R 클래스가 다시 생성되도록 프로젝트를 청소 해 보라. 값이 업데이트되지 않는 경우가 있습니다.

+1

+1. Android SDK는 때때로 혼란 스러울 수 있습니다. XML 파일을 변경할 때 자주 청소하는 것이 가장 좋습니다. 이클립스의 기본 동작과 SDK가 수행하는 작업 사이에서 프로젝트가 빌드 또는 런타임 오류를 종종 접하게된다. 의심 스러울 때, "깨끗한"... –

+1

아! 청소가 그랬어. 감사합니다 – OppfinnarJocke

+1

우수. 답을 수락하는 것이 답이없는 상태로 남지 않도록 고려하시기 바랍니다. – sfratini

6

그것은이 라인과 같습니다

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

가 진행 막대에 단추를 캐스팅입니다.

즉, findViewByIdR.id.progressBar1 버튼을 반환합니다.

주문을 변경했기 때문에이 ID는 여전히 버튼에 해당됩니다. 이것은 생성 된 파일의 문제점을 지적합니다. 프로젝트/클린을 할 것입니다.

관련 문제