2014-01-31 35 views
0

我在Android模擬器中運行它的時候..後立即Android的基礎,,錯誤沒有理由..

遇到錯誤我加之一:

TV =(TextView的)findViewById(R.id。 textView1); //或//

rb =(RatingBar)findViewById(R.id.ratingBar1); //因爲某些原因(沒有其他代碼)//

需要幫助,我想使TextView的變化,因爲變化的RatingBar

XML

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="39dp" 
    android:text=" " 
    android:textSize="50dp"/> 

<RatingBar 
    android:id="@+id/ratingBar1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="54dp" 
    android:numStars="5" 
    android:rating="0" /> 

的Java

package com.examplef.rating; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.RatingBar; 
import android.widget.RatingBar.OnRatingBarChangeListener; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

TextView tv; 
RatingBar rb; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    tv = (TextView) findViewById(R.id.textView1); 
    rb = (RatingBar) findViewById(R.id.ratingBar1); 

    rb.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){ 

     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating, 
       boolean fromUser) { 
      tv.setText(rb.getNumStars()); 

     } 

    }); 
} 

} 

其中一個logcat說:

: E/AndroidRuntime(2014): java.lang.RuntimeException: 
Unable to start activity   
ComponentInfo{com.examplef.rating/com.examplef.rating.MainActivity}: 
java.lang.ClassCastException: android.widget.RatingBar cannot be cast 
toandroid.widget.TextView 
+3

你能告訴我們你在說什麼錯誤? – PakkuDon

+0

請發佈您的logCat –

+0

粘貼您的LogCat錯誤。 –

回答

1
Caused by: java.lang.ClassCastException: android.widget.RatingBar cannot be cast to android.widget.TextView 

你已經正確初始化你的看法。因此,清理並構建一次你的項目並運行應用程序。

rb.getNumStars()返回int

http://developer.android.com/reference/android/widget/RatingBar.html#getNumStars()

public int getNumStars() 

Added in API level 1 
Returns the number of stars shown. 

Returns 
The number of stars shown. 

因此改變

tv.setText(String.valueOf(rb.getNumStars())); 

setText查找具有id這是一個int值的資源。如果沒有找到,你會得到ResourceNotFOundException

你可以看到下面的

public final void setText (int resid) // what you have 

public final void setText (CharSequence text) // what you need 
+1

@BrianRoach將其聲明爲實例變量。如果它聲明在onCreate是我同意它需要是最終的。 – Raghunandan

+0

是的 - 當我再次看到它時,我終於抓住了那個。 –

+1

Thx它現在正在工作 – user3255883