2012-01-06 17 views
9

EclipseとAndroid SDKを使用して、ButtonとProgressBarを持つ簡単なテストアプリケーションを管理しました。 ProgressBarが表示されたときにProgressBarにボタンを移動させたくないことを除いて、すべて正常に動作します。したがって、テストのために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にキャストしようとしていません。私はそれを取得しません...

+0

main.xmlファイルも追加できますか? ProgressBarとしてButtonをキャストしようとしているようです。 – Ivan

+1

いいえ、私は意識的に少なくともそうではありません(記事を参照)。更新されなかったR.javaでした。以下を参照してください。 – OppfinnarJocke

+0

プロジェクトをクリーンアップして再構築してください。 main.xmlファイルを貼り付け、他の問題があるかどうかを確認します(あるオブジェクトを削除してもう一度追加してみてください)。 – Ivan

答えて

20

Rクラスが再び生成されるようにプロジェクトをクリーニングしてみてください。値が更新されないことがあります。

+1

+1清掃のため。 Android SDKは時々「混乱」する可能性があります。これはその1つです。 XMLファイルを変更するときは、しばしばきれいにすることが最善です。 Eclipseのデフォルトの動作とSDKの動作の間に、プロジェクトがビルドエラーやランタイムエラーを起こすことがよくあります。疑いがあるときは、 "きれいな" ... –

+1

ああ!清掃しまし​​た。ありがとう – OppfinnarJocke

+1

優れています。答えが受け入れられないように答えを受け入れることを検討してください。 – sfratini

6

これは、この行のようになります。

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

は、プログレスバーにボタンを落としています。

これは、findViewByIdR.id.progressBar1のボタンを返すことを意味します。

あなたが注文を変更したと言っているので、このIDはまだボタンに対応しています。これは生成されたファイルの問題を指しています。 私はプロジェクト/クリーンをやります。

関連する問題