我有一個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