2011-12-19 75 views
0

現狀:
如果退出的Android應用程序的一個主要活動,我想呼籲的活動的生活實例的方法,以使它們在陣列中明確數據(使得陣列尚未填充返回時到應用程序)。如何知道當前活動實例是否存在?

在MainActivity.java

// ... 
@Override 
public void onDestroy() {  
    super.onDestroy(); 
    // call method to clear an array list of its data 
    // NullPointerException here if OtherActivity has no current living instance 
    OtherActivity.clearAllData();   
} 

在OtherActivity.java

// ... 
private static ArrayList <String> myStringCollection; 
// ... 
public static void clearAllData(){ 
    if(myStringCollection.size() > 0){ 
    myStringCollection.clear(); 
    Log.d(TAG, "clearing data in OtherActivity"); 
    } 

} 

問:
我們怎樣才能知道OtherActivity是否有目前的生活實例,以便我們可以製作一個saf e調用OtherActivity.clearAllData()?

什麼代碼試圖做的事:
退出應用程序,並返回到它後,一些的ArrayList仍然有一些舊的數據,並因此新的數據(一式兩份)被堆放在上面。此代碼嘗試從主活動的onDestroy()上的ArrayList清除數據,以便稍後返回到應用程序時不會有舊數據。

回答

2

您的代碼當前正在使用靜態變量。靜態變量附加到ClassLoader而不是該類的實際實例。這意味着你實際上並不需要一個有效的生活實例來完成你在上面做的事情。只需使用像myStringCollection != null這樣的檢查來保證你的變量已經被初始化了,你應該沒問題。

注意,請澄清,如果你確實想訪問非靜態變量。

+0

感謝您的反饋Grimmace。我會試一試。我使用的是類方法來調用另一個活動的方法和傳遞數據前/後(可能不是這樣做,但最好的方法...) – sean 2011-12-19 22:53:25

+0

更新:已停止了NullPointerException異常,但是在失敗後清除陣列數據成功應用quit..The問題正從問題的範圍遠所以我就接受你的答案,並重新考慮的辦法。再次感謝。 – sean 2011-12-19 22:56:11

+0

我會去了解一下'SharedPreferences'。這是在類之間傳遞數據的簡單方法。還加入'Extras'你'Intents'可以是很有益的,如果你不希望數據是持久的。 – Grimmace 2011-12-19 22:56:11

相關問題