Почему я не могу переопределить onConfigurationChanged (Configuration)? - PullRequest
4 голосов
/ 19 июня 2011

Я уже видел подобный вопрос здесь , и я уже добавил строку import android.content.res.Configuration;.Это не помогло.

Я пишу класс, который расширяет AdapterView<Adapter>, и Eclipse не позволит мне переопределить onConfigurationChanged(Configuration)Как видно на странице AdapterView в Документах Android , метод действительно существует.Так почему я не могу переопределить это?

Вот моя реализация:

import android.content.Context;
import android.content.res.Configuration;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
public class Foo extends AdapterView<Adapter> {

  public Foo(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
  }

  @Override
  public Adapter getAdapter() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public View getSelectedView() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public void setAdapter(Adapter adapter) {
    // TODO Auto-generated method stub

  }

  @Override
  public void setSelection(int position) {
    // TODO Auto-generated method stub

  }

  /*
   * Error is thrown here... The method onConfigurationChanged(Configuration) of
   * type Foo must override or implement a supertype method
   */
  @Override
  protected void onConfigurationChanged(Configuration newConfig) {
    /*
     * Error is thrown here... The method onConfigurationChanged(Configuration) is
     * undefined for the type AdapterView<Adapter>
     */
    super.onConfigurationChanged(newConfig);
  }
}

Ответы [ 2 ]

4 голосов
/ 19 июня 2011

onConfigurationChanged() был добавлен к View на уровне API 8. Ваша цель сборки в Eclipse (или цель в default.properties для командной строки), вероятно, установлена ​​на более низкий уровень API.

0 голосов
/ 19 июня 2011

onConfigurationChanged находится только в представлении "С тех пор: API уровень 8". Если вы разрабатываете более раннюю версию, такого метода нет, поэтому вы не можете переопределить и вызвать его. В «Деятельности» есть один, и вы можете доказать, что ваш код верен, изменив свои расширения в активность. Это не сработает для компиляции конечно, так как вам нужен адаптер, но как подтверждение концепции вашего импорта и всего этого:)

...