【发布时间】:2012-03-29 20:32:09
【问题描述】:
我有一个 BroadcastReceiver 作为单独的类文件,在后台监听来自服务的传感器操作。我希望它偶尔在屏幕上显示文本。
我希望 BroadcastClass 在我的 Activity 类中调用一个方法来处理要显示的字符串。但是我的 BroadcastReceiver 类无法调用非静态方法(?)“无法从 myActivity 类型对非静态方法 showString(String) 进行静态引用”
如果我在我的 Activity 类中将特定方法设为静态,它会通过不再找到 findViewById 来有效地失去与自己 Activity 的 UI 的联系“无法对非静态方法 findViewById(int ) 来自类型 Activity"。
在另一个小应用程序中,我有一个 BroadcastReceiver 作为 Activity 类文件中的内部类。然后我直接从它访问 UI 没有问题。然后我将相关视图声明为类文件字段。但我想更好地构建事物,将 UI 与广播接收和分析分开。将整个应用程序源代码放在同一个文件中会变得非常混乱。
创建 Activity 的实例是什么意思?我应该在 Activity 本身还是在 BroadcastReceiver 中这样做?我不想要多个 UI 实例,但我可能需要从几个不同的类访问它。
编辑添加: 我从书中尝试了这种单例模式,但无法实例化 myActivity,不允许访问构造函数。输入 onCreate 前崩溃:
public class MyStartupActivity extends Activity {
private static MyStartupActivity uniqueInstance;
private MyStartupActivity() {}
public static MyStartupActivity instantiate() {
if (uniqueInstance == null) {
uniqueInstance = new MyStartupActivity();
}
return uniqueInstance;
}
【问题讨论】:
标签: android methods static scope