我有一个BroadcastReceiver作为单独的类文件,在后台监听来自服务的传感器动作。我希望它在Occassions上的屏幕上显示文字。不允许调用我自己的方法(“静态”之谜)
我想让BroadcastClass在我的Activity类中调用一个方法,该方法负责显示字符串。但我的广播接收器类不能调用它们不是静态的(?)“不能让一个静态引用从类型myActivity非静态方法showString(字符串)”
方法如果我做的特定方法静态的,我的Activity类,它没有找到findViewById,它有效地失去了与它自己的活动的UI的联系“无法对类型为Activity的非静态方法findViewById(int)进行静态引用。
在另一个小应用程序中,我有一个BroadcastReceiver作为Activity类文件内部的类。然后我没有直接从它访问UI的问题。然后我将相关视图声明为类文件字段。但我希望更好地构建事物,将UI与广播接收和分析分开。它变得非常混乱,无法将整个应用程序源代码放在同一个文件中。
创建活动的实例意味着什么?我应该在活动本身还是在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;
}
是什么意思创建活动的实例?我应该在活动本身还是在BroadcastReceiver中执行此操作?我不想要一个以上的UI实例,但我可能需要从几个不同的类访问它。 – Tombola 2012-03-13 12:47:53
您需要调用新的ClassName()。比你有一个合作的实例。 – rekire 2012-03-13 12:49:26
每当我这样做时,我不会得到一个新实例吗?例如我的BroadcastReceiver类工作的Activity的一个实例,以及我的Service类工作的另一个实例。当应用程序与Activity一起启动时,它是否是第三个实例? – Tombola 2012-03-13 12:57:14