【问题标题】:Update UI from parent class on different thread from secondary class在与辅助类不同的线程上从父类更新 UI
【发布时间】:2010-08-18 01:09:14
【问题描述】:

我有一个构建我的 UI 的父类(目前基本上只是一个文本框)。我创建了一个辅助类,它创建了一个新线程,我需要能够从新线程更新父类上的文本框。我尝试的一切都会引发错误。我假设我需要创建某种调度程序,但我的背景是 C#,我对如何在 Java 中做到这一点并不是 100% 熟悉。

我的最新迭代将父类的对象传递给辅助类中的静态方法,该方法最终通过实例化辅助类的对象(其中包含 run() 方法)来创建新线程。我在辅助对象中有一个构造函数,它期望从父类传入的对象,当传入时,设置我在父类的成员部分中贴花的属性。当我尝试在 run() 方法中访问该成员以更新父类上的文本框时,出现错误。

次要类基本上是这样的:

        public class SecondaryClass extends Thread {
    private ParentClass pc = null;
    public SecondaryClass(ParentClass PC){
    pc = PC;
    }
    public static void StartThread(ParentClass pC){
       Thread thread = new SecondaryClass(pC);
       thread.start();
    }
    public void run() {
      pc.myTextBox.append("something");
    }
}

我还尝试在父类上创建一个公共方法,该方法接受一个字符串作为它的唯一参数,并从辅助类的 run() 中调用该方法并在那里传递“somethign”。父类上的方法更新相同的文本框,但那里也有问题。

谁能提供一些关于我需要做什么才能跨这些线程访问 UI 元素的见解?

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    【讨论】:

    • 好的,感谢您的回复。我实际上是为安卓设备编写的。我不确定 Swing 或 AWT 是否适用于 android,但我不认为它可以。有没有我可以使用的调度程序方法而不是使用 swing 包?
    • @Kyle 应该支持。添加了类似问题已回答的链接。
    • 我刚刚确认了。不幸的是,android开发不支持swing。我会将您的回复标记为答案,因为您确实为我的原始问题提供了充分的答案(不知道它是针对 android 的)。我发现这篇文章可以帮助我解决我的 android 开发问题:ibm.com/developerworks/library/x-gourmetandroid/…
    • 感谢凯尔表现出积极的姿态。大多数时候,在这种情况下,用户只是让问题无人回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多