2

評価バーを表示する警告ダイアログがあります。

LayoutInflater rating = LayoutInflater.from(RatingActivity.this);
            final View v = rating.inflate(R.layout.rating_layout, null);

            AlertDialog.Builder adb = new AlertDialog.Builder(RatingActivity.this);
            adb.setTitle("Rate us!);
            adb.setView(v);
            AlertDialog ratingbar = adb.create();

final RatingBar cleanbar = (RatingBar) ratingbar.findViewById(R.id.clealiness);

onclickリスナーをトリガーすると、NULL POINTER EXCEPTIONが表示されます。そして2行目のエラーはgetNumStars()行でエラーを言います..その後強制的に閉じます。

adb.setPositiveButton("Rate", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
    //this line error. means they cant get the rating value?
final String cleaninput = Integer.toString(cleanbar.getNumStars());

ratingbar の値を取得する他の方法を教えてください。ratingBar.getRating(); のようなものはほとんど見たことがありません。ratingBar.getNumStars();

それらのすべてが機能しませんでした...値をintに直接入れても。

final int cleaninput = (int) cleanbar.getRating();  //fails

編集済み (解決)::

final RatingBar cleanbar = (RatingBar)v.findViewById(R.id.clealiness); 

代わりに評価バーを v に置き換えると、機能します! 理由はわかりません>.<

4

1 に答える 1

2

あなたの問題はこれだと思います:

final RatingBar cleanbar = (RatingBar) ratingbar.findViewById(R.id.clealiness);

アクティビティ (RatingBar を含む) のレイアウトから RatingBar を初期化していないため、RatingBar が正しく初期化されませんNPE

cleanbar.getNumStars() // cleanbar is assigned as null

に変更します

final RatingBar cleanbar = (RatingBar) findViewById(R.id.clealiness);

これで動作するはずです。

アップデート:

LayoutInflater rating = LayoutInflater.from(RatingActivity.this);
final View ratingView = rating.inflate(R.layout.rating_layout, null);

AlertDialog.Builder adb = new AlertDialog.Builder(RatingActivity.this);               
adb.setTitle("Rate us!);
adb.setView(ratingView);

AlertDialog ratingbar = adb.create();

値を正しく取得するために:

RatingBar cleanbar = (RatingBar) ratingView.findViewById(R.id.clealiness);

膨らませたRatingBar状態で割り当てる必要があります。View

これで動作するはずです:

final int cleaninput = (int) cleanbar.getRating(); 
于 2013-03-17T09:53:25.273 に答える