使用get和setters throw活动 - 更新Static Var

时间:2014-01-12 16:55:45

标签: android android-intent android-activity static-methods

我正在尝试更新我的serverBuffer并自动在两个活动之间传递值。在第一个活动MainActivity中,我创建了以后在另一个活动ListActivity中使用的函数。

问题是当我传递变量时它始终为null。任何人都可以帮助我吗?

在MainActivity中,我的notificationList会自动更新。

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

在ListActivity中,我试试这个:

list = MainActivity.getNotificationsList();

始终获取空指针,包含或不包含列表信息。

1 个答案:

答案 0 :(得分:0)

如果要在活动之间传递数据,请使用意图而不是静态变量。

ArrayList实现了serializable,因此您可以使用intent传递列表。

如果你想维护一个全局状态,你可以使用Application类,但我想在这种情况下我应该选择意图。

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

然后在SecondActivity中获取列表

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

如果您希望使用Application类,可以参考

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:name“packagename.MyApplication”

然后在活动

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

同样使用getArrayList()