【问题标题】:Changing a View from another package从另一个包更改视图
【发布时间】:2012-01-25 18:46:48
【问题描述】:

我正在做的是创建一个名为 MainGame 的类,其中包含 View 视图。在另一个包中,我有另一个在程序启动时运行的类。该类是 MainGame 的子类。当我尝试在此类中调用我在 MainGame 中创建的视图并对其进行修改时,它会崩溃。

01-25 16:21:43.195: E/AndroidRuntime(1683): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

我知道这条错误消息的含义,但我应该怎么做才能修复它?

【问题讨论】:

    标签: android surfaceview


    【解决方案1】:

    对于后来遇到这种情况的人,Daniel 在这篇文章中找到了解决方案: How to access original activity's views from spawned background service

    【讨论】:

    • 首先,我所说的视图是一个 AdView,在 UI 线程中我尝试调用: if (adView != null){ a.setVisibility(View.INVISIBLE) 这是因为我不希望该应用出现在此类中。
    • adView 是如何/在哪里创建的?它是膨胀还是添加到其他地方?
    • 在 MainGame 类中,它的创建就像一个普通的 View,我只是想从另一个地方调整它。
    • 能否提供崩溃的调用堆栈?或者在调用 setVisibility() 的地方转储 Thread.currentThread().getStackTrace() 的结果
    • 我需要吗?我唯一想做的就是通过引用同一对象的类变量从另一个类更改视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多