我正在使用自定义脚本引擎创建一个专家系统引擎,其中一些命令与主 xml gui 集成。例如,有一个“响应”命令接受字符串并将它们设置在 EditText 中。响应命令对于应用程序的功能至关重要,但我无法使用 findViewById 访问 EditText,因为命令例程位于另一个类中。即使它是错误的形式,我如何才能从其他类访问 GUI 元素?
谢谢你。
我正在使用自定义脚本引擎创建一个专家系统引擎,其中一些命令与主 xml gui 集成。例如,有一个“响应”命令接受字符串并将它们设置在 EditText 中。响应命令对于应用程序的功能至关重要,但我无法使用 findViewById 访问 EditText,因为命令例程位于另一个类中。即使它是错误的形式,我如何才能从其他类访问 GUI 元素?
谢谢你。
如何从其他类访问 GUI 元素?
如果另一个类是 Activity,则不能。您应该通过 Intent 或其他方式传递 EditText 的内容。
如果其他类不是 Activity,只需将 EditText 设为公共字段变量。或者,您可以将其他类传递给您的 Activity 或根视图的引用,并使用类似findViewById()
的方法而无需大惊小怪。
通过使用自定义方法(如public void setEditText(EditText myEditText)
或类似的方法)或作为其构造函数中的参数(取决于您的情况)将 EditText 对象提供给“其他类”。
另一种可能性是发送定义 EditText 的完整 Activity,以便您可以findViewById()
用来抓取 EditText。但我不会推荐它(我认为这是不好的做法),除非您有很多需要访问的对象。
我有同样的问题。我的活动中的代码有太多代码,我想创建外部类来在那里进行一些处理。但是,一个过程包括使用EditText
,并且您不能在没有 UI 的类中实例化它。因此,最简单的解决方案是在活动中创建EditText myEditText
变量public
,static
然后在外部类中使用它时,只需将点表示法与它来自的原始活动一起使用,它应该可以工作。static
关键字使它成为一个全局变量,其他类/活动可以访问。
public static EditText myEditText;
// 把它放在你的活动中
ActivityName.myEditText.someMethod();
// 在你的外部类中使用 EditText