0

5つ以上の星が表示されているため、RatingBar動的に作成してアラートダイアログに割り当てています。コードは次のとおりです。

rater
    .setCancelable(false)
    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            //How to get the rating value here

    });
rater.setNegativeButton("Abbrechen", null);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View final layout = inflater.inflate(R.layout.ratinglayout,null);
rater.setView(layout);
//rater.setView(getLayoutInflater().inflate(R.layout.ratinglayout, null));
rater.show();

の XML レイアウトRatingBarは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RatingBar
        android:id="@+id/ratingStars"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize="1"
        android:layout_gravity = "center_horizontal"
         />

</LinearLayout>

アラート ダイアログの OK ハンドラー内で評価値を取得するにはどうすればよいですか? 私は次のことを試しました:

RatingBar rating = (RatingBar) findViewById(R.id.ratingStars);

しかし、これを行うと、null ポインター例外の警告が表示されます。したがって、問題は評価値を取得する方法です。

4

2 に答える 2

3
float rating = ((RatingBar)layout.findViewById(R.id.ratingStars)).getRating();

これを ok クリック ハンドラー内で使用します。こちらのドキュメントを参照してください

のウォークインしようとしているfindViewByIdActivityは、それがnullを返す理由だと思います。

于 2013-03-20T10:08:42.073 に答える