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
。有什麼不同?的Android onContentChanged上2.3 VS 4.2
更新:從我嘗試過:在我看來,從ActionBarActivity延伸(不直接從2.3的Activity)時,在調用contentChanged時尚未到位,但從Activity的Activity 2.3方法調用準時。暫且一個醜陋的黑客攻擊,這似乎是工作是:我有一個超類,從ActionBarActivity延伸MyActivity,還有我重寫所有的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
很高興看到你得到它的工作。您應該添加您的「更新2」編輯作爲答案並接受它,以便人們知道此問題已得到解決。 :) –