Android onContentИзменено на 2.3 по сравнению с 4.2

public class MyActivity extends ActionBarActivity {

    @Override
    public void onContentChanged() {
        TextView tv = (TextView) findViewById(R.id.asdasd);
        // tv is NULL on Android 2.3
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

}

На устройстве Android версии 4.2 findViewById() возвращает правильный вид, тогда как на 2.3 он в основном возвращает null. Какая разница?

ОБНОВЛЕНИЕ: Из того, что я пробовал: мне кажется, что каким-то образом при расширении из ActionBarActivity (не напрямую из Activity 2.3) изменения еще не на месте, когда вызывается contentChanged, но при расширении из Activity 2.3 вызов метода вовремя. В настоящее время уродливый хак, который, кажется, работает: у меня есть суперкласс для MyActivity, который расширяется от ActionBarActivity, там я переопределяю все методы setContentView следующим образом:

@Override
    public void setContentView(View view) {
        super.setContentView(view);
        afterSetContentView = true;
        onContentChanged();
    }

и внутри моего onContentChanged я проверяю afterSetContentView, а затем использую findViewById.

ОБНОВЛЕНИЕ 2: по-видимому, это ошибка в библиотеках поддержки, я сообщил об этом, и она была назначена, поэтому они исправляют ее сейчас: https://code.google.com/p/android/issues./detail?id=59445&q=onContentChanged&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars


comment
Рад видеть, что у вас все получилось. Вы должны добавить свое ОБНОВЛЕНИЕ 2 в качестве ответа и принять его, чтобы люди знали, что эта проблема была исправлена. :)   -  person Alex Lockwood    schedule 30.08.2013


Ответы (1)


Как оказалось, это была ошибка в Support Library. Подробнее см. здесь: https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=onContentChanged&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=59445

person inteloid    schedule 30.08.2013
comment
ОБНОВЛЕНИЕ: Сегодня сделали релиз, посмотрите. - person inteloid; 01.11.2013