【问题标题】:Android onContentChanged on 2.3 vs 4.2Android onContentChanged 2.3 与 4.2
【发布时间】:2013-08-26 16:44:02
【问题描述】:
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 时更改尚未到位,但是从 2.3 的 Activity 扩展时方法调用准时。暂时一个看起来有效的丑陋黑客是:我有一个 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

【问题讨论】:

  • 很高兴看到您成功了。您应该添加您的“更新 2”编辑作为答案并接受它,这样人们就会知道这个问题已得到解决。 :)

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


【解决方案1】:

【讨论】:

  • 更新:今天他们发布了,看看吧。
猜你喜欢
  • 2013-06-24
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多