2014-05-18 53 views
0

大家好:)我一直在評級欄上工作,它完美地工作,唯一的問題是它不會在用戶離開頁面或應用程序後保存評級。 SO的一位名叫Lal的用戶幫助了我,我已經把它全部建立起來了,但似乎仍然在做一些錯誤的事情。它的工作方式是在main-activity中有一個listview,當你點擊一個listview行時,它會調用一個加載相應頁面的新類。在相應的頁面上是ratingBar。我不會在mainactivity中調用ratingbar,我會在main_activity調用中調用它,以引用單擊的行。在共享首選項中保存評級條評級

這裏是代碼在評價欄是ListItemActivity1.java

RatingBar ratingBar; 
TextView ratingText; 
SharedPreferences wmbPreference1;  
SharedPreferences.Editor editor;   
@Override 
protected void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState); 
setContentView(R.layout.list_item_activity_1);  
ratingText = (TextView) findViewById(R.id.rating); 
((RatingBar) findViewById(R.id.ratingBar1)) 
.setOnRatingBarChangeListener(this); 
wmbPreference1 = PreferenceManager.getDefaultSharedPreferences(this); 
float rating = wmbPreference1.getFloat("numStars", 0f); 
ratingBar.setRating(rating); 
} 
@Override 
public void onRatingChanged(RatingBar ratingBar, float rating, 
boolean fromTouch) {   
final int numStars = ratingBar.getNumStars(); 
editor = wmbPreference1.edit(); 
editor.putFloat("numStars", rating); 
editor.commit();  
int ratings = wmbPreference1.getInt("numStars", 0); 
ratingText.setText(rating + "/" + String.valueOf(ratings)); 
} 
} 

上的代碼的最後一行出現問題。我收到一個錯誤,表示無法在基本類型int上調用toString()。我應該有一個字符串設置?另一個問題是,使用新代碼時,當我嘗試在控制檯中重新加載說明啓動屏幕無法加載,活動未啓動,其當前任務已提前到達時,在模擬器中出現錯誤。這一切似乎都源於上面的共享偏好和最後一行代碼。

任何幫助,將不勝感激,我一直在堅持了一段時間這個評級欄上^^真的想移動到應用程序的更緊迫的部分...

回答

0

要轉換的int值字符串,請使用String.valueOf(ratings)

無論如何,你的代碼還有其他一些問題。在onRatingChanged()我假設你想要將當前評級保存到SharedPreferences中。該變量將爲rating(因爲getNumStars()返回恆星的總數,而不是當前值)。

要保存此值,則應該使用編輯器做到這一點,在提交之前,即

editor = wmbPreference1.edit(); 
editor.putFloat("numStars", rating); 
editor.commit(); 

並將其在onCreate()恢復,這樣做:

float rating = wmbPreference1.getFloat("numStars", 0f); 
ratingBar.setRating(rating); 
+0

嘿Matiash,我更新的代碼以上與你的建議,但不確定如何實現String.valueOf(評級)線?任何幫助將不勝感激,這是我第一次使用共享偏好與ratingBar。 – acro

+0

@ user3606168當您顯示「4/5」文本時,僅適用於最後一行。使用'ratingText.setText(rating +「/」+ String.valueOf(ratings));' – matiash

+0

感謝Matiash,我更新了上面的代碼。沒有更多的錯誤,但當我嘗試打開頁面的應用程序崩潰:(任何其他想法?感謝您的幫助。 – acro