Android onContentChanged on 2.3 vs 4.2

时间:2013-08-26 16:44:02

标签: android android-support-library android-actionbar-compat android-actionbaractivity

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设备v.4.2上,findViewById()返回正确的视图,而在2.3上它基本上返回null。有什么区别?

更新:从我尝试的内容:在我看来,从ActionBarActivity扩展(不是直接来自2.3的Activity),当调用contentChanged时,但是当从Activity 2.3扩展时,更改尚未到位。方法调用是准时的。暂时似乎工作的丑陋黑客是:我有一个MyActivity的超类,它从ActionBarActivity扩展,在那里我覆盖所有setContentView方法,如下所示:

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

在我的onContentChanged中,我检查afterConConViewView然后使用findViewById。

更新2:看起来,它是支持库中的一个错误,我已经报告并且已经分配了,所以他们现在正在修复它:https://code.google.com/p/android/issues/detail?id=59445&q=onContentChanged&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars