0
マイレーティングが保存されていません。各条件文を使って、私はonRatingChange()メソッドを呼び出します。だから私はアイテムに評価を与える。私は戻るボタンを押して、前の項目をクリックしますが、レーティングはデフォルトに戻されます。ユーザーの選択した評価を共有プリファレンスに保存しようとしています
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import java.util.Arrays;
public class infoFragment extends Fragment implements RatingBar.OnRatingBarChangeListener {
TextView degrees;
ImageView image;
String stringtext;
String [] hold;
RatingBar rating;
SharedPreferences wmbPreference1;
SharedPreferences.Editor editor;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.info_layout, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
image = (ImageView) view.findViewById(R.id.imageView);
rating = (RatingBar) view.findViewById(R.id.ratingBar);
rating.setOnRatingBarChangeListener(this);
wmbPreference1 = PreferenceManager.getDefaultSharedPreferences(getActivity());
degrees =(TextView)view.findViewById(R.id.textView);
}
この方法は、私が参照としてこれを使用する設定 を設定を保存および/または取得するために使用されています方法onRatingChanged
でHow do you SAVE user rating in rating bar?
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromTouch) {
//if nothing was saved do this
if(ratingBar==null) {
final int numStars = ratingBar.getNumStars();
editor = wmbPreference1.edit();
editor.putInt("numStars", numStars);
editor.commit();
int ratings = wmbPreference1.getInt("numStars", 2);
}
else
// int number = wmbPreference1.getInt("numStars",0); trying to retreive saved data
}
public void setText(final String string) {
Character[] hold;
if(string == "apple"){
String[] word = { " A \n", "B\n" };
degrees.setText(Arrays.toString(word).replaceAll("\\[|\\]", ""));;
image.setImageResource(R.drawable.APPLE);
onRatingChanged(rating,0,true);//calling method to save data
}
if(string == "orange"){
String[] word = { " AA\n", "AB\n" };
degrees.setText(Arrays.toString(word).replaceAll("\\[|\\]", ""));;
image.setImageResource(R.drawable.orange);
onRatingChanged(rating,0,true);//calling method to save data
}
}
public void sentText(){
new MyTask().execute();
}
private class MyTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... strings) {
Bundle b = getArguments();
stringtext = b.getString("text");
return null;
}
protected void onPostExecute(String result){setText(stringtext);
}
}
}
ありがとうございます-1どのように私はユーザーが選択した時間から最初の時間を決定することができます。ヌルの代わりに0を使用しますか?私はgetNumStarsを使うことができない場合は、ユーザーが選択した数字を得るために何が使えますか?あなたは何を意味するのですか? – nameishi
@ A.simpleは、私が提供したリファレンスを見ましたが、プログラムのために働いていました。そして、正しい答えとして選択されました。なぜそれが私にinssueを与えるのですか – nameishi
- 1 0nCreateViewメソッドでratingBarを初期化できます。-2 onRatingChangedメソッドの最初のパラメータは、ユーザーがRatingBarを操作していることを表し、onCreateViewメソッドで定義したものです。 2番目のパラメータ。getNumStartsが返すメソッドを呼び出すこのRatingBarの合計開始点を返す –