Помогите с getParent () downcast - PullRequest
0 голосов
/ 28 апреля 2010

Я изучаю Android / Java и у меня есть пример кода, который я не могу получить на работе:

OnRatingBarChangeListener l = new OnRatingBarChangeListener() {
 public void onRatingChanged(RatingBar ratingBar, float rating,
   boolean fromTouch) {
  Integer myPos=(Integer)ratingBar.getTag();
  RowModel model=getModel(myPos);
  model.rating = rating;

  LinearLayout p=(LinearLayout)ratingBar.getParent();
  TextView l=(TextView)p.findViewById(R.id.label);
  l.setText(model.toString());
 }
};

Все работает, кроме понижения LinearLayout / getParent (). Во время выполнения он создает ClassCastException. Если я закомментирую этот блок кода, то все будет работать нормально. Чего мне не хватает?

1 Ответ

1 голос
/ 28 апреля 2010

Ну, ratingBar.getParent() не возвращает LinearLayout. Узнайте, что возвращает статический тип ratingBar.getParent (), и используйте (ссылку на) этот тип для назначения.

Возможно, вы думаете, что ratingBar - это LinearLayout, и вас не устраивает приоритет Java? Оператор вызова метода . имеет более высокий приоритет, чем оператор приведения (type). Это маловероятно, но, возможно, вы хотели это сделать:

LinearLayout p=( (LinearLayout)ratingBar ).getParent();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...