2014-01-12 18 views
0

我在嘗試更新我的serverBuffer並自動在兩個活動之間傳遞值。在第一個活動MainActivity中,我創建了函數供以後在另一個活動ListActivity中使用。使用get和setters引發活動 - 更新Static Var的

問題是,當我通過變量它總是爲空。誰能幫我?

在MainActivity中,我的notificationList會自動更新。

private static ArrayList<String> notificationsList = new ArrayList<String>(); 

在ListActivity,我試試這個:

list = MainActivity.getNotificationsList(); 

總是得到一個空指針,有或沒有在名單上的信息。

+0

您可以使用應用程序類。 – Raghunandan

+0

我用從stackoverflow取得的一個例子來試用它。但我無法實現這個概念本身。 – urb

+0

假設'ListActivity'從'MainActivity'啓動,您可以使用EXTRA傳遞notificationList。 – ramaral

回答

0

如果您想在活動之間傳遞數據,請使用intent而不是靜態變量。

ArrayList實現了可序列化,因此您可以使用intent來傳遞列表。

如果你想保持一個全局狀態,你可以使用應用程序類,但我猜意圖應該是我選擇這種情況。

Intent i = new Intent(ActivityName.this,SecondActivity.class); 
intent.putStringArrayListExtra("key",yourlist); 
startActivity(intent); 

然後在SecondActivity獲取列表

ArrayList<String> list = getIntent().getStringArrayExtra("key"); 

如果你想使用的應用類,你可以參考這個

Using MyApplication class in android for JSON data

應用類

public class MyApplication extends Application{ 

    ArrayList<String>> arraylist; 

    public static MyApplication instance=null; 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 

    public static MyApplication getInstance() 
    { 
     if(instance==null) 
     { 
      instance=new MyApplication(); 
     } 
     return instance; 
    } 

    public void setArrayListData(ArrayList<String> setData) 
    { 
     arraylist=setData; 
    } 

    public ArrayList<String> getArrayListData() 
    { 
     return arraylist; 

    } 
} 

在清單應用標籤的android:名字 「packagename.MyApplication」 在活動

然後

MyApplciation mapp = MyApplication.getInstance(); 
    mapp.setArrayList(yourlist); 

同樣使用getArrayList()

+0

我仍然有同樣的問題。這個想法如下,我有一個任務總是從服務器接收信息。這些信息被放置在一個ArrayList中。這個ArrayList被傳遞給各種活動。而且我希望這個參數受到更新,所以我可以隨時在應用程序列表中的任何位置進行更新。 – urb

+0

@Urbester使用應用程序類 – Raghunandan

+0

對不起,但如何?我在網上搜索了一些教程,甚至在這裏回答了stackoverflow,但無法正確實現。 – urb