Android onContentChanged 在 2.3 和 4.2 上

标签 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() 返回正确的 View ,而在 2.3 上它基本上返回 null。有什么区别?

更新:根据我的尝试:在我看来,从 ActionBarActivity 扩展时(不是直接从 2.3 的 Activity 扩展)当调用 contentChanged 时,更改尚未到位,但是从 2.3 的 Activity 扩展时方法调用准时。目前,一个丑陋的 hack 似乎正在工作:我有一个从 ActionBarActivity 扩展的 MyActivity 的父类(super class),在那里我重写了所有 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

最佳答案

关于Android onContentChanged 在 2.3 和 4.2 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448930/

相关文章:

android - Html.fromHtml 或 Spannable,哪个最好?

android - ActionBar 兼容性和透明度

android - 如何解决 Android 错误 "method setSupportActionBar in class AppCompatActivity cannot be applied to given types"?

java - android 如何设置viewpager只加载一页和setOffscreenPageLimit()

android - 使用 Android NDK 预构建静态库和共享库时出现链接问题

java - Android 对象处理/持久化

android - DrawableCompat.setTint() 不再适用于 appcompat-v7 23.2.1

android - 如何缩小导航图标和工具栏标题之间​​的差距?

android - 在 API 21+ 上使用带有 srcCompat 的 VectorDrawables 将 Android 支持库更新到 23.2.0

Android ActionBar 自定义 Action View 工具提示